После загрузки файла в облачное хранилище вы также можете получать и обновлять метаданные файла, например, просматривать или обновлять тип контента. Файлы также могут хранить пользовательские пары «ключ/значение» с дополнительными метаданными.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как 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);
Обработка ошибок
Ошибки при получении или обновлении метаданных могут возникать по ряду причин, включая отсутствие файла или отсутствие у пользователя прав доступа к нужному файлу. Подробнее об ошибках можно узнать в разделе «Обработка ошибок» документации.
Пользовательские метаданные
Вы можете указать пользовательские метаданные, используя параметр 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> | Да |
Загрузка, скачивание и обновление файлов важны, но не менее важна и возможность их удаления. Давайте узнаем, как удалить файлы из облачного хранилища.