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