Po przesłaniu pliku do Cloud Storage możesz również wyświetlić i zaktualizować metadane pliku, na przykład aby wyświetlić lub zaktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi pliku.
Pobieranie metadanych
Metadane pliku zawierają typowe właściwości, takie jak name
, size
i contentType
(często określane jako typ MIME), a także mniej typowe, takie jak contentDisposition
i timeCreated
. Te metadane można pobrać z odwołania Cloud Storage za pomocą metody getMetadata()
.
Kotlin
// 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
Po zakończeniu przesyłania pliku możesz zaktualizować jego metadane w dowolnym momencie, używając metody updateMetadata()
. Więcej informacji o tym, które właściwości można aktualizować, znajdziesz na tej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych. Wszystkie pozostałe pozostaną bez zmian.
Kotlin
// 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ąć właściwości meta danych, które można zapisać, przekazując null
:
Kotlin
// 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 podczas pobierania lub aktualizowania metadanych mogą wystąpić z różnych powodów, na przykład z powodu braku pliku lub braku uprawnień użytkownika do dostępu do odpowiedniego pliku. Więcej informacji o błędach znajdziesz w sekcji Przetwarzanie błędów w dokumentacji.
Niestandardowe metadane
Metadane niestandardowe możesz określić za pomocą metody setCustomMetadata()
w klasie StorageMetadata.Builder
.
Kotlin
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();
Dane dotyczące aplikacji dla każdego pliku możesz przechowywać w niestandardowych metadanych, ale zdecydowanie zalecamy używanie bazy danych (np. Firebase Realtime Database) do przechowywania i synchronizowania tego typu danych.
Właściwości metadanych pliku
Poniżej znajdziesz pełną listę właściwości metadanych pliku:
Getter właściwości | Typ | Setter Exists |
---|---|---|
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, ale równie ważne jest ich usuwanie. Dowiedz się, jak usuwać pliki z Cloud Storage.