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