Usar metadados de arquivos na Web

Depois de fazer upload de um arquivo para a referência do Cloud Storage, você também pode receber ou atualizar os metadados do arquivo, por exemplo, para 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, 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 a partir de uma referência do Cloud Storage com o método getMetadata(). getMetadata() retorna uma Promise contendo os metadados completos ou um erro se a Promise for rejeitada.

// Create a reference to the file whose metadata we want to retrieve
var forestRef = storageRef.child('images/forest.jpg');

// Get metadata properties
forestRef.getMetadata().then(function(metadata) {
  // Metadata now contains the metadata for 'images/forest.jpg'
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

Atualizar metadados de arquivo

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 updateMetadata() retorna uma Promise contendo os metadados completos ou um erro se a Promise for rejeitada.

// Create a reference to the file whose metadata we want to change
var forestRef = storageRef.child('images/forest.jpg');

// Create file metadata to update
var newMetadata = {
  cacheControl: 'public,max-age=300',
  contentType: 'image/jpeg'
}

// Update metadata properties
forestRef.updateMetadata(newMetadata).then(function(metadata) {
  // Updated metadata for 'images/forest.jpg' is returned in the Promise
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

Para excluir uma propriedade de metadados, defina-a como null:

// Create file metadata with property to delete
var deleteMetadata = {
  contentType: null
}

// Delete the metadata property
forestRef.updateMetadata(deleteMetadata).then(function(metadata) {
  // metadata.contentType should be null
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

Solucionar erros

Podem ocorrer diferentes erros ao receber ou atualizar metadados, como arquivo inexistente ou usuário sem permissão de acesso ao arquivo desejado. Veja mais informações sobre erros na seção Como lidar com erros.

Metadados personalizados

É possível especificar metadados personalizados como um objeto contendo propriedades String.

var metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
}

Você pode usar metadados personalizados para armazenar dados específicos adicionais do app para cada arquivo, mas recomendamos usar 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 Gravável
bucket string NÃO
generation string NÃO
metageneration string NÃO
fullPath string NÃO
name string NÃO
size número NÃO
timeCreated string NÃO
updated string NÃO
md5Hash string SIM para upload, NÃO para updateMetadata
cacheControl string SIM
contentDisposition string SIM
contentEncoding string SIM
contentLanguage string SIM
contentType string SIM
customMetadata Objeto contendo string -> mapeamentos de 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.