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()
.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
forestRef.metadata.addOnSuccessListener { metadata -> // Metadata now contains the metadata for 'images/forest.jpg' }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
forestRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Metadata now contains the metadata for 'images/forest.jpg' } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
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.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
// Create file metadata including the content type val metadata = storageMetadata { contentType = "image/jpg" setCustomMetadata("myCustomProperty", "myValue") } // Update metadata properties forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // Updated metadata is in updatedMetadata }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
// Create file metadata including the content type StorageMetadata metadata = new StorageMetadata.Builder() .setContentType("image/jpg") .setCustomMetadata("myCustomProperty", "myValue") .build(); // Update metadata properties forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Updated metadata is in storageMetadata } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
É possível excluir as propriedades de metadados graváveis transmitindo o valor null
:
Kotlin+KTX
// Create file metadata with property to delete val metadata = storageMetadata { contentType = null } // Delete the metadata property forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // updatedMetadata.contentType should be null }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create file metadata with property to delete StorageMetadata metadata = new StorageMetadata.Builder() .setContentType(null) .build(); // Delete the metadata property forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // metadata.contentType should be null } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
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 Tratar erros.
Metadados personalizados
Especifique metadados personalizados com o método setCustomMetadata()
na classe
StorageMetadata.Builder
.
Kotlin+KTX
val metadata = storageMetadata { setCustomMetadata("location", "Yosemite, CA, USA") setCustomMetadata("activity", "Hiking") }
Java
StorageMetadata metadata = new StorageMetadata.Builder() .setCustomMetadata("location", "Yosemite, CA, USA") .setCustomMetadata("activity", "Hiking") .build();
É possível armazenar dados específicos do app para cada arquivo nos metadados personalizados, mas recomendamos o uso de 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 das propriedades de metadados em um arquivo:
Getter da propriedade | Tipo | Existe um setter? |
---|---|---|
getBucket |
String |
NÃO |
getGeneration |
String |
NÃO |
getMetadataGeneration |
String |
NÃO |
getPath |
String |
NÃO |
getName |
String |
NÃO |
getSizeBytes |
long |
NÃO |
getCreationTimeMillis |
long |
NÃO |
getUpdatedTimeMillis |
long |
NÃO |
getMd5Hash |
String |
NÃO |
getCacheControl |
String |
SIM |
getContentDisposition |
String |
SIM |
getContentEncoding |
String |
SIM |
getContentLanguage |
String |
SIM |
getContentType |
String |
SIM |
getCustomMetadata |
String |
SIM |
getCustomMetadataKeys |
Set<String> |
NÃO |
Fazer o download, upload e atualizar arquivos são tarefas importantes, mas saber como removê-los também é essencial. Saiba como excluir arquivos do Cloud Storage.