Używanie metadanych pliku w Cloud Storage na Androidzie

Po przesłaniu pliku do Cloud Storage możesz również wyświetlić i zaktualizować metadane pliku, na przykład aby wyświetlić lub zaktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi pliku.

Pobieranie metadanych pliku

Metadane pliku zawierają typowe właściwości, takie jak name, size i contentType (często określane jako typ MIME), a także mniej typowe, takie jak contentDisposition i timeCreated. Te metadane można pobrać z pliku referencyjnego Cloud Storage za pomocą metody 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!
    }
});

Aktualizowanie metadanych pliku

Po zakończeniu przesyłania pliku możesz zaktualizować jego metadane w dowolnym momencie, używając metody updateMetadata(). Więcej informacji o tym, które właściwości można aktualizować, znajdziesz na tej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych, a pozostałe pozostaną bez zmian.

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

Możesz usunąć właściwości meta danych, które można zapisać, przekazując 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!
            }
        });

Obsługa błędów

Błędy podczas pobierania lub aktualizowania metadanych mogą wystąpić z różnych powodów, na przykład z powodu braku pliku lub braku uprawnień użytkownika do wybranego pliku. Więcej informacji o błędach znajdziesz w sekcji Przetwarzanie błędów w dokumentacji.

Niestandardowe metadane

Metadane niestandardowe możesz określić za pomocą metody setCustomMetadata() w klasie 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();

Dane dotyczące aplikacji dla każdego pliku możesz przechowywać w niestandardowych metadanych, ale zdecydowanie zalecamy używanie bazy danych (np. Firebase Realtime Database) do przechowywania i synchronizowania tego typu danych.

Właściwości metadanych pliku

Poniżej znajdziesz pełną listę właściwości metadanych pliku:

Narzędzie do pobierania właściwości Typ Setter Exists
getBucket String NIE
getGeneration String NIE
getMetadataGeneration String NIE
getPath String NIE
getName String NIE
getSizeBytes long NIE
getCreationTimeMillis long NIE
getUpdatedTimeMillis long NIE
getMd5Hash String NIE
getCacheControl String TAK
getContentDisposition String TAK
getContentEncoding String TAK
getContentLanguage String TAK
getContentType String TAK
getCustomMetadata String TAK
getCustomMetadataKeys Set<String> NIE

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale równie ważne jest ich usuwanie. Dowiedz się, jak usuwać pliki z Cloud Storage.