Verwenden Sie Dateimetadaten mit Cloud Storage auf Android

Nach dem Hochladen einer Datei in die Cloud Storage-Referenz können Sie auch die Dateimetadaten abrufen und aktualisieren, um beispielsweise den Inhaltstyp anzuzeigen oder zu aktualisieren. Dateien können auch benutzerdefinierte Schlüssel/Wert-Paare mit zusätzlichen Dateimetadaten speichern.

Dateimetadaten abrufen

Dateimetadaten enthalten allgemeine Eigenschaften wie name , size und contentType (häufig als MIME-Typ bezeichnet) sowie einige weniger häufige Eigenschaften wie contentDisposition und timeCreated . Diese Metadaten können mit der Methode getMetadata() aus einer Cloud Storage-Referenz abgerufen werden.

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

Dateimetadaten aktualisieren

Sie können Dateimetadaten jederzeit nach Abschluss des Datei-Uploads aktualisieren, indem Sie die Methode updateMetadata() verwenden. Weitere Informationen darüber, welche Eigenschaften aktualisiert werden können, finden Sie in der vollständigen Liste . Es werden nur die in den Metadaten angegebenen Eigenschaften aktualisiert, alle anderen bleiben unverändert.

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

Sie können beschreibbare Metadateneigenschaften löschen, indem Sie null übergeben:

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

Behandeln Sie Fehler

Es gibt eine Reihe von Gründen, warum beim Abrufen oder Aktualisieren von Metadaten Fehler auftreten können, darunter, dass die Datei nicht vorhanden ist oder der Benutzer keine Berechtigung zum Zugriff auf die gewünschte Datei hat. Weitere Informationen zu Fehlern finden Sie im Abschnitt „Fehler behandeln“ der Dokumentation.

Benutzerdefinierte Metadaten

Sie können benutzerdefinierte Metadaten mit der Methode setCustomMetadata() in der Klasse StorageMetadata.Builder angeben.

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();

Sie können app-spezifische Daten für jede Datei in benutzerdefinierten Metadaten speichern. Wir empfehlen jedoch dringend, eine Datenbank (z. B. die Firebase Realtime Database ) zu verwenden, um diese Art von Daten zu speichern und zu synchronisieren.

Dateimetadateneigenschaften

Eine vollständige Liste der Metadateneigenschaften einer Datei finden Sie unten:

Immobilien-Getter Typ Setter existiert
getBucket String NEIN
getGeneration String NEIN
getMetadataGeneration String NEIN
getPath String NEIN
getName String NEIN
getSizeBytes long NEIN
getCreationTimeMillis long NEIN
getUpdatedTimeMillis long NEIN
getMd5Hash String NEIN
getCacheControl String JA
getContentDisposition String JA
getContentEncoding String JA
getContentLanguage String JA
getContentType String JA
getCustomMetadata String JA
getCustomMetadataKeys Set<String> NEIN

Das Hochladen, Herunterladen und Aktualisieren von Dateien ist wichtig, aber auch die Möglichkeit, sie zu entfernen. Erfahren Sie, wie Sie Dateien aus dem Cloud-Speicher löschen .