Ir para o console

Usar metadados de arquivos com o Cloud Storage para Unity

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

Acessar metadados de arquivo

Os metadados do arquivo contêm propriedades comuns, geralmente chamadas de tipo MIME, como Name, SizeBytes e ContentType, além de outras não tão usuais como ContentDisposition e CreationTimeMillis. Esses metadados podem ser recuperados a partir de uma referência do Cloud Storage com o método GetMetadataAsync.

// Create reference to the file whose metadata we want to retrieve
Firebase.Storage.StorageReference forest_ref =
  storage_ref.Child("images/forest.jpg");

// Get metadata properties
forest_ref.GetMetadataAsync().ContinueWith((Task<StorageMetadata> task) => {
  if (!task.IsFaulted && !task.IsCanceled) {
    Firebase.Storage.StorageMetadata meta = task.Result;
    // do stuff with meta
  }
});

Atualizar metadados de arquivos

Você pode atualizar os metadados do arquivo a qualquer momento após o upload do arquivo ser concluído usando o método UpdateMetadataAsync, que utiliza um objeto MetadataChange. Consulte a lista completa e veja mais informações sobre quais propriedades podem ser atualizadas. Somente as propriedades especificadas nos metadados são atualizadas. As demais não são modificadas.

// Create reference to the file whose metadata we want to change
StorageReference forest_ref = storage_ref.child("images/forest.jpg");

// Create file metadata to update
var new_metadata = new Firebase.Storage.MetadataChange();
new_metadata.CacheControl = "public,max-age=300";
new_metadata.ContentType = "image/jpeg";

// Update metadata properties
forest_ref.UpdateMetadataAsync(new_metadata).ContinueWith(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        // access the updated meta data
        Firebase.Storage.StorageMetadata meta = task.Result;
    }
});

É possível excluir propriedades de metadados graváveis ao transferir a string vazia:

// Create file metadata to update
var new_metadata = new Firebase.Storage.MetadataChange();
new_metadata.ContentType = "";

// Update metadata properties
forest_ref.UpdateMetadataAsync(new_metadata).ContinueWith(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        Firebase.Storage.StorageMetadata meta = task.Result;
        // meta.ContentType should be an empty string now
    }
});

Como lidar com erros

Podem ocorrer diferentes erros ao receber ou atualizar metadados, como arquivo inexistente ou usuário sem permissão de acesso ao arquivo desejado. Veja mais informações sobre erros na seção Como lidar com erros.

Metadados personalizados

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

var new_metadata = new Firebase.Storage.MetadataChange {
  CustomMetadata = new Dictionary<string, string> {
     {"location", "Yosemite, CA, USA"},
     {"activity", "Hiking"}
  }
}

// UpdateMetadataAsync

Você pode armazenar dados específicos do app para cada arquivo nos metadados personalizados, mas recomendamos usar um banco de dados (como o Firebase Realtime Database) para armazenar e sincronizar esse tipo de dado.

Propriedades de metadados de arquivo

Veja abaixo uma lista completa de propriedades de metadados em um arquivo:

Propriedade Tipo Modificável no 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óximas etapas

Fazer download, upload e atualizar arquivos são tarefas importantes, mas poder removê-los também é essencial. Saiba como excluir arquivos do Cloud Storage.