Depois de fazer o upload de um arquivo para a referência do Cloud Storage, receba e atualize os metadados desse arquivo para, por exemplo, ver ou atualizar o tipo de conteúdo. Os arquivos também podem armazenar pares de chave/valor personalizados com outros metadados de arquivos.
Acessar metadados de arquivos
Os metadados de arquivos contêm propriedades comuns, que muitas vezes são chamadas de tipo MIME, como name
, size
e contentType
, além de outras menos comuns, como contentDisposition
e timeCreated
. Esses metadados podem ser
recuperados de uma referência do Cloud Storage com
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 arquivos
Com o método updateMetadata()
, é possível atualizar os metadados de arquivos
após a conclusão do upload. Consulte 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
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
É possível excluir as propriedades de metadados graváveis transmitindo o valor null
:
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
Tratar 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 Solucionar erros.
Metadados personalizados
É possível 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 app para cada arquivo nos metadados personalizados, mas é altamente recomendável 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 | Definí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 |
Fazer download, upload e atualizar arquivos são tarefas importantes, mas poder removê-los também é essencial. Saiba como excluir arquivos do Cloud Storage.