Usar metadados de arquivo com o Cloud Storage para Unity

Depois de fazer upload de um arquivo para a referência do Cloud Storage, você também pode obter e atualizar os metadados do arquivo, por exemplo, para atualizar o tipo de conteúdo. Os arquivos também podem armazenar pares chave/valor personalizados com metadados de arquivo adicionais.

Obtenha metadados de arquivo

Os metadados do arquivo contêm propriedades comuns, como Name , SizeBytes e ContentType (geralmente chamadas de tipo MIME), além de algumas menos comuns, como ContentDisposition e CreationTimeMillis . Esses metadados podem ser recuperados de uma referência do Cloud Storage usando o método 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
    }
});

Atualizar metadados de arquivo

Você pode atualizar os metadados do arquivo a qualquer momento após a conclusão do upload do arquivo usando o método UpdateMetadataAsync que utiliza um objeto MetadataChange . Consulte a lista completa para obter mais informações sobre quais propriedades podem ser atualizadas. Somente as propriedades especificadas nos metadados são atualizadas, todas as outras permanecem inalteradas.

// 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;
    }
});

Você pode excluir propriedades de metadados graváveis ​​passando a string vazia:

// 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
    }
});

Lidar com erros

Existem vários motivos pelos quais podem ocorrer erros na obtenção ou atualização de metadados, incluindo o arquivo não existente ou o usuário não ter permissão para acessar o arquivo desejado. Mais informações sobre erros podem ser encontradas na seção Tratar erros da documentação.

Metadados personalizados

Você pode especificar metadados personalizados como Dictionary<string, string> .

var newMetadata = new MetadataChange {
    CustomMetadata = new Dictionary<string, string> {
        {"location", "Yosemite, CA, USA"},
        {"activity", "Hiking"}
    }
};

// UpdateMetadataAsync

Você pode armazenar dados específicos do aplicativo para cada arquivo em metadados personalizados, mas é altamente recomendável usar um banco de dados (como o Firebase Realtime Database ) para armazenar e sincronizar esse tipo de dados.

Propriedades de metadados de arquivo

Uma lista completa de propriedades de metadados em um arquivo está disponível abaixo:

Propriedade Tipo Modificável em MetadataChange
Bucket string NÃO
Generation string NÃO
MetadataGeneration string NÃO
Path string NÃO
Name string NÃO
SizeBytes long NÃO
CreationTimeMillis long NÃO
UpdatedTimeMillis long NÃO
CacheControl string SIM
ContentDisposition string SIM
ContentEncoding string SIM
ContentLanguage string SIM
ContentType string SIM
DownloadUrl Uri NÃO
DownloadUrls IList<Uri> NÃO
CustomMetadataKeys IEnumerable<string> SIM

Próximos passos

Carregar, baixar e atualizar arquivos é importante, mas poder removê-los também. Vamos aprender como excluir arquivos do Cloud Storage.