После загрузки файла в ссылку Cloud Storage вы также можете получить и обновить метаданные файла, например, для просмотра или обновления типа контента. Файлы также могут хранить пользовательские пары ключ/значение с дополнительными метаданными файла.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как name
, size
, и contentType
(часто называемый типом MIME) в дополнение к некоторым менее распространенным, таким как contentDisposition
и timeCreated
. Эти метаданные можно получить из ссылки на облачное хранилище с помощью метода getMetadata()
.
// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");
// Get metadata properties
final metadata = await forestRef.getMetadata();
// Metadata now contains the metadata for 'images/forest.jpg'
Обновить метаданные файла
Вы можете обновить метаданные файла в любое время после завершения загрузки файла с помощью метода updateMetadata()
. Ознакомьтесь с полным списком для получения дополнительной информации о том, какие свойства могут быть обновлены. Обновляются только свойства, указанные в метаданных, все остальные остаются неизменными.
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newMetadata = SettableMetadata(
cacheControl: "public,max-age=300",
contentType: "image/jpeg",
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);
// Updated metadata for 'images/forest.jpg' is returned
Вы можете удалить доступные для записи свойства метаданных, передав null
:
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
Обработка ошибок
Существует ряд причин, по которым могут возникать ошибки при получении или обновлении метаданных, включая отсутствие файла или отсутствие у пользователя разрешения на доступ к нужному файлу. Более подробную информацию об ошибках можно найти в разделе Handle Errors документации.
Пользовательские метаданные
Вы можете указать пользовательские метаданные с помощью параметра customMetadata
конструктора SettableMetadata
:
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newCustomMetadata = SettableMetadata(
customMetadata: {
"location": "Yosemite, CA, USA",
"activity": "Hiking",
},
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);
// Updated metadata for 'images/forest.jpg' is returned
Вы можете хранить данные, специфичные для приложения, для каждого файла в пользовательских метаданных, но мы настоятельно рекомендуем использовать базу данных (например, Firebase Realtime Database ) для хранения и синхронизации этого типа данных.
Свойства метаданных файла
Полный список свойств метаданных файла доступен ниже:
Свойство | Тип | Устанавливается? |
---|---|---|
bucket | String | Нет |
generation | String | Нет |
metageneration | String | Нет |
metadataGeneration | String | Нет |
fullPath | String | Нет |
name | String | Нет |
size | int | Нет |
timeCreated | DateTime | Нет |
updated | DateTime | Нет |
md5Hash | String | Нет |
cacheControl | String | Да |
contentDisposition | String | Да |
contentEncoding | String | Да |
contentLanguage | String | Да |
contentType | String | Да |
customMetadata | Map<String, String> | Да |
Загрузка, скачивание и обновление файлов важны, но также важна и возможность их удаления. Давайте узнаем, как удалять файлы из Cloud Storage.