Ir para o console

Usar metadados de arquivos no Android

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 arquivo

Os metadados do arquivo contêm propriedades comuns, geralmente chamadas de tipo MIME, como name, size e contentType, além de outras não tão comuns como contentDisposition e timeCreated. Esses metadados podem ser recuperados a partir de uma referência do Cloud Storage com o método getMetadata().

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!
    }
});

Kotlin

// 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 now contains the metadata for 'images/forest.jpg'
}.addOnFailureListener {
    // Uh-oh, an error occurred!
}

Atualizar metadados de arquivos

Usando o método updateMetadata(), você pode 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

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!
            }
        });

Kotlin

// 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.Builder()
        .setContentType("image/jpg")
        .setCustomMetadata("myCustomProperty", "myValue")
        .build()

// Update metadata properties
forestRef.updateMetadata(metadata).addOnSuccessListener {
    // Updated metadata is in storageMetadata
}.addOnFailureListener {
    // Uh-oh, an error occurred!
}

É possível excluir as propriedades de metadados graváveis transmitindo o valor null:

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!
            }
        });

Kotlin

// Create file metadata with property to delete
val metadata = StorageMetadata.Builder()
        .setContentType(null)
        .build()

// Delete the metadata property
forestRef.updateMetadata(metadata).addOnSuccessListener {
    // metadata.contentType should be null
}.addOnFailureListener {
    // 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

Especifique metadados personalizados com o método setCustomMetadata() na classe StorageMetadata.Builder.

Java

StorageMetadata metadata = new StorageMetadata.Builder()
        .setCustomMetadata("location", "Yosemite, CA, USA")
        .setCustomMetadata("activity", "Hiking")
        .build();

Kotlin

val metadata = StorageMetadata.Builder()
        .setCustomMetadata("location", "Yosemite, CA, USA")
        .setCustomMetadata("activity", "Hiking")
        .build()

É possível armazenar os dados específicos de app de 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.