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

После загрузки файла в облачное хранилище вы также можете получать и обновлять метаданные файла, например, просматривать или обновлять тип контента. Файлы также могут хранить пользовательские пары «ключ/значение» с дополнительными метаданными.

Получить метаданные файла

Метаданные файла содержат общие свойства, такие как 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> Да

Загрузка, скачивание и обновление файлов важны, но не менее важна и возможность их удаления. Давайте узнаем, как удалить файлы из облачного хранилища.