Używaj metadanych plików w Cloud Storage na Androidzie

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

Pobierz metadane pliku

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

Zaktualizuj metadane pliku

Metadane pliku można zaktualizować w dowolnym momencie po zakończeniu przesyłania pliku, korzystając z metody updateMetadata() . Więcej informacji na temat właściwości, które można aktualizować, można znaleźć na pełnej liście . Aktualizowane są tylko właściwości określone w metadanych, wszystkie pozostałe pozostają niezmienione.

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ąć zapisywalne właściwości metadanych, 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

Istnieje wiele powodów, dla których mogą wystąpić błędy podczas pobierania lub aktualizowania metadanych, na przykład nieistniejący plik lub brak uprawnień dostępu użytkownika do żądanego pliku. Więcej informacji na temat błędów można znaleźć w sekcji Obsługiwanie błędów w dokumentacji.

Niestandardowe metadane

Niestandardowe metadane można 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();

Możesz przechowywać dane specyficzne dla aplikacji dla każdego pliku w niestandardowych metadanych, ale zdecydowanie zalecamy korzystanie z bazy danych (takiej jak baza danych Firebase Realtime Database ) do przechowywania i synchronizowania tego typu danych.

Właściwości metadanych pliku

Pełna lista właściwości metadanych pliku jest dostępna poniżej:

Pobieracz właściwości Typ Seter istnieje
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żna jest możliwość ich usunięcia. Dowiedzmy się, jak usunąć pliki z Cloud Storage.