Use metadados de arquivo com Cloud Storage no Flutter

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.