Используйте метаданные файлов с 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> Да

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