Как использовать метаданные файлов с Cloud Storage для Unity

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