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

После загрузки файла в облачное хранилище вы также можете получить и обновить метаданные файла, например, чтобы обновить тип контента. Файлы также могут хранить пользовательские пары ключ/значение с дополнительными метаданными файла.

Получить метаданные файла

Метаданные файла содержат общие свойства, такие как Name , SizeBytes и ContentType (часто называемые типом MIME), а также некоторые менее распространенные свойства, такие как ContentDisposition и CreationTimeMillis . Эти метаданные можно получить из ссылки на облачное хранилище с помощью метода 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.