Po przesłaniu pliku do referencji Cloud Storage możesz też uzyskać i aktualizować metadane pliku, np. wyświetlać lub aktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi pliku.
Pobieranie metadanych pliku
Metadane pliku zawierają typowe właściwości, takie jak name
, size
,
contentType
(często nazywany typem MIME), a także
najpopularniejsze, takie jak contentDisposition
i timeCreated
. Metadane te mogą być
pobrano z odwołania Cloud Storage za pomocą
metody getMetadata()
.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
forestRef.metadata.addOnSuccessListener { metadata -> // Metadata now contains the metadata for 'images/forest.jpg' }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
forestRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Metadata now contains the metadata for 'images/forest.jpg' } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Aktualizowanie metadanych pliku
Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu przesyłania, poprzez
za pomocą metody updateMetadata()
. Zapoznaj się z
pełna lista.
można zaktualizować. Aktualizowane są tylko właściwości określone w metadanych,
wszystkie pozostałe pozostaną niezmienione.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
// Create file metadata including the content type val metadata = storageMetadata { contentType = "image/jpg" setCustomMetadata("myCustomProperty", "myValue") } // Update metadata properties forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // Updated metadata is in updatedMetadata }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
// Create file metadata including the content type StorageMetadata metadata = new StorageMetadata.Builder() .setContentType("image/jpg") .setCustomMetadata("myCustomProperty", "myValue") .build(); // Update metadata properties forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Updated metadata is in storageMetadata } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Możesz usunąć dostępne do zapisu właściwości metadanych, przekazując parametr null
:
Kotlin+KTX
// Create file metadata with property to delete val metadata = storageMetadata { contentType = null } // Delete the metadata property forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // updatedMetadata.contentType should be null }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create file metadata with property to delete StorageMetadata metadata = new StorageMetadata.Builder() .setContentType(null) .build(); // Delete the metadata property forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // metadata.contentType should be null } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Obsługa błędów
Błędy mogą być spowodowane przez różne metadanych, w tym pliku, który nie istnieje, lub użytkownika, który nie ma uprawnień; aby uzyskać dostęp do wybranego pliku. Więcej informacji o błędach znajdziesz w Obsługa błędów sekcji dokumentów.
Niestandardowe metadane
Metadane niestandardowe możesz określić za pomocą metody setCustomMetadata()
w pliku
StorageMetadata.Builder
zajęcia.
Kotlin+KTX
val metadata = storageMetadata { setCustomMetadata("location", "Yosemite, CA, USA") setCustomMetadata("activity", "Hiking") }
Java
StorageMetadata metadata = new StorageMetadata.Builder() .setCustomMetadata("location", "Yosemite, CA, USA") .setCustomMetadata("activity", "Hiking") .build();
W przypadku każdego pliku możesz przechowywać dane dotyczące konkretnej aplikacji w niestandardowych metadanych, ale zalecamy korzystanie z bazy danych (takiej jak Firebase Realtime Database) do przechowywania i synchronizowania tego typu danych.
Właściwości metadanych pliku
Pełna lista właściwości metadanych pliku jest dostępna poniżej:
Narzędzie do pobierania właściwości | Typ | Seter już istnieje |
---|---|---|
getBucket |
String |
NIE |
getGeneration |
String |
NIE |
getMetadataGeneration |
String |
NIE |
getPath |
String |
NIE |
getName |
String |
NIE |
getSizeBytes |
long |
NIE |
getCreationTimeMillis |
long |
NIE |
getUpdatedTimeMillis |
long |
NIE |
getMd5Hash |
String |
NIE |
getCacheControl |
String |
TAK |
getContentDisposition |
String |
TAK |
getContentEncoding |
String |
TAK |
getContentLanguage |
String |
TAK |
getContentType |
String |
TAK |
getCustomMetadata |
String |
TAK |
getCustomMetadataKeys |
Set<String> |
NIE |
Przesyłanie, pobieranie i aktualizowanie plików jest ważne, aby je usunąć. Zobaczmy, jak usuwanie plików od Cloud Storage.