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

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

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