После загрузки файла в Cloud Storage вы также можете получить и обновить метаданные файла, например, чтобы обновить тип контента. Файлы также могут хранить пользовательские пары ключ/значение с дополнительными метаданными файла.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как Name
, SizeBytes
и ContentType
(часто называемые типом MIME), а также некоторые менее распространенные свойства, такие как ContentDisposition
и CreationTimeMillis
. Эти метаданные можно получить из ссылки Cloud Storage с помощью метода GetMetadataAsync
.
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
Обновить метаданные файла
Вы можете обновить метаданные файла в любое время после завершения отправки файла, используя метод UpdateMetadataAsync
, который принимает объект MetadataChange
. Обратитесь к полному списку для получения дополнительной информации о том, какие свойства можно обновить. Обновляются только свойства, указанные в метаданных, все остальные остаются неизмененными.
// Create reference to the file whose metadata we want to change StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
Вы можете удалить доступные для записи свойства метаданных, передав пустую строку:
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
Обработка ошибок
Существует ряд причин, по которым могут возникать ошибки при получении или обновлении метаданных, включая отсутствие файла или отсутствие у пользователя разрешения на доступ к нужному файлу. Дополнительную информацию об ошибках можно найти в разделе «Обработка ошибок» документации.
Пользовательские метаданные
Вы можете указать собственные метаданные в виде Dictionary<string, string>
.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
Вы можете хранить данные приложения для каждого файла в пользовательских метаданных, но мы настоятельно рекомендуем использовать базу данных (например, Firebase Realtime Database ) для хранения и синхронизации данных этого типа.
Свойства метаданных файла
Полный список свойств метаданных файла доступен ниже:
Свойство | Тип | Возможность изменения в MetadataChange |
---|---|---|
Bucket | string | НЕТ |
Generation | string | НЕТ |
MetadataGeneration | string | НЕТ |
Path | string | НЕТ |
Name | string | НЕТ |
SizeBytes | long | НЕТ |
CreationTimeMillis | long | НЕТ |
UpdatedTimeMillis | long | НЕТ |
CacheControl | string | ДА |
ContentDisposition | string | ДА |
ContentEncoding | string | ДА |
ContentLanguage | string | ДА |
ContentType | string | ДА |
DownloadUrl | Uri | НЕТ |
DownloadUrls | IList<Uri> | НЕТ |
CustomMetadataKeys | IEnumerable<string> | ДА |
Следующие шаги
Загрузка, скачивание и обновление файлов важны, но не менее важна и возможность их удаления. Давайте узнаем, как удалить файлы из Cloud Storage .