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