После загрузки файла в цифровой отпечаток Cloud Storage вы также можете получить и обновить метаданные файла, например просмотреть или обновить тип контента. В файлах также могут храниться настраиваемые пары "ключ-значение" с дополнительными метаданными файла.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как name, size и contentType (часто называемые MIME-типом), а также некоторые менее распространенные, например contentDisposition и timeCreated. Эти метаданные можно получить из ссылки Cloud Storage с помощью метода 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! } });
Обновление метаданных файла
Вы можете обновить метаданные файла в любое время после завершения загрузки файла, используя метод updateMetadata(). Полный список свойств, которые можно обновить, приведен в этой статье. Обновляются только свойства, указанные в метаданных, а все остальные остаются без изменений.
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! } });
Чтобы удалить свойства метаданных, доступные для записи, передайте 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! } });
Обработка ошибок
При получении или обновлении метаданных могут возникать ошибки по разным причинам, например если файл не существует или у пользователя нет разрешения на доступ к нему. Дополнительную информацию об ошибках можно найти в разделе Обработка ошибок.
Пользовательские метаданные
Вы можете указать собственные метаданные с помощью метода setCustomMetadata() в классе 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();
Вы можете хранить данные, относящиеся к приложению, для каждого файла в пользовательских метаданных, но мы настоятельно рекомендуем использовать базу данных (например, Firebase Realtime Database) для хранения и синхронизации данных этого типа.
Свойства метаданных файла
Ниже приведен полный список свойств метаданных файла.
| Геттер свойства | Тип | Сеттер существует |
|---|---|---|
getBucket |
String |
НЕТ |
getGeneration |
String |
НЕТ |
getMetadataGeneration |
String |
НЕТ |
getPath |
String |
НЕТ |
getName |
String |
НЕТ |
getSizeBytes |
long |
НЕТ |
getCreationTimeMillis |
long |
НЕТ |
getUpdatedTimeMillis |
long |
НЕТ |
getMd5Hash |
String |
НЕТ |
getCacheControl |
String |
ДА |
getContentDisposition |
String |
ДА |
getContentEncoding |
String |
ДА |
getContentLanguage |
String |
ДА |
getContentType |
String |
ДА |
getCustomMetadata |
String |
ДА |
getCustomMetadataKeys |
Set<String> |
НЕТ |
Загрузка, скачивание и обновление файлов важны, но также важна возможность их удаления. Давайте узнаем, как удалять файлы из Cloud Storage.