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 visualizar ou 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
, size
e contentType
(geralmente chamadas de tipo MIME), além de algumas menos comuns, como contentDisposition
e timeCreated
. Esses metadados podem ser recuperados de uma referência do Cloud Storage usando o método getMetadata()
.
// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");
// Get metadata properties
final metadata = await forestRef.getMetadata();
// Metadata now contains the metadata for 'images/forest.jpg'
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 updateMetadata()
. 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
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newMetadata = SettableMetadata(
cacheControl: "public,max-age=300",
contentType: "image/jpeg",
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);
// Updated metadata for 'images/forest.jpg' is returned
Você pode excluir propriedades de metadados graváveis passando null
:
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
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 usando o parâmetro customMetadata
do construtor SettableMetadata
:
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newCustomMetadata = SettableMetadata(
customMetadata: {
"location": "Yosemite, CA, USA",
"activity": "Hiking",
},
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);
// Updated metadata for 'images/forest.jpg' is returned
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 | Configurável? |
---|---|---|
bucket | String | Não |
generation | String | Não |
metageneration | String | Não |
metadataGeneration | String | Não |
fullPath | String | Não |
name | String | Não |
size | int | Não |
timeCreated | DateTime | Não |
updated | DateTime | Não |
md5Hash | String | Não |
cacheControl | String | Sim |
contentDisposition | String | Sim |
contentEncoding | String | Sim |
contentLanguage | String | Sim |
contentType | String | Sim |
customMetadata | Map<String, String> | Sim |
Carregar, baixar e atualizar arquivos é importante, mas poder removê-los também. Vamos aprender como excluir arquivos do Cloud Storage.