Depois de fazer upload de um arquivo para a referência do Cloud Storage, também é possível 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 de uma referência do Cloud Storage usando o método getMetadata()
. getMetadata()
retornará uma Promise
contendo os metadados completos ou um erro se a Promise
for rejeitada.
Web
import { getStorage, ref, getMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to retrieve const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Get metadata properties getMetadata(forestRef) .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Web
// 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((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Atualizar metadados do 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.
Web
import { getStorage, ref, updateMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to change const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata to update const newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties updateMetadata(forestRef, newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Web
// 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((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Para excluir uma propriedade de metadados, defina-a como null
:
Web
import { getStorage, ref, updateMetadata } from "firebase/storage"; const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata with property to delete const deleteMetadata = { contentType: null }; // Delete the metadata property updateMetadata(forestRef, deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Web
// Create file metadata with property to delete var deleteMetadata = { contentType: null }; // Delete the metadata property forestRef.updateMetadata(deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Lidar com 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 Tratar erros.
Metadados personalizados
É possível especificar metadados personalizados como um objeto contendo propriedades String
.
Web
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
É possível 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. Vamos aprender como excluir arquivos do Cloud Storage.