Depois de fazer 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 de arquivos contêm propriedades comuns, como Name
, SizeBytes
e ContentType
, que muitas vezes são chamadas de tipo MIME, além de outras 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
É possível atualizar os metadados do arquivo a qualquer momento após a conclusão do upload,
usando o método UpdateMetadataAsync
, que usa um objeto MetadataChange
.
Veja a lista completa para saber mais sobre as propriedades que 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 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; } });
É possível excluir propriedades de metadados graváveis ao transferir 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
Podem ocorrer diferentes erros ao receber ou atualizar metadados, como arquivo inexistente ou usuário sem permissão de acesso ao arquivo desejado. Saiba mais sobre erros na seção Tratar erros.
Metadados personalizados
É possível especificar metadados personalizados como um Dictionary<string, string>
.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
É possível armazenar os dados específicos de app de cada arquivo nos metadados personalizados, mas recomendamos o uso de um banco de dados como o Firebase Realtime Database para armazenar e sincronizar esse tipo de dados.
Propriedades de metadados de arquivos
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. Vamos aprender como excluir arquivos do Cloud Storage.