Используйте метаданные файлов с Cloud Storage на Flutter

После загрузки файла в ссылку 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.