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.