Nachdem Sie eine Datei in die Cloud Storage-Referenz hochgeladen haben, können Sie auch die Metadaten der Datei abrufen und aktualisieren, um beispielsweise den Inhaltstyp zu aktualisieren. Dateien können auch benutzerdefinierte Schlüssel/Wert-Paare mit zusätzlichen Dateimetadaten speichern.
Dateimetadaten abrufen
Dateimetadaten enthalten neben einigen weniger gebräuchlichen Eigenschaften wie ContentDisposition
und CreationTimeMillis
auch allgemeine Eigenschaften wie Name
, SizeBytes
und ContentType
(häufig als MIME-Typ bezeichnet). Diese Metadaten können mithilfe der GetMetadataAsync
Methode aus einer Cloud Storage-Referenz abgerufen werden.
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
Dateimetadaten aktualisieren
Sie können Dateimetadaten jederzeit nach Abschluss des Datei-Uploads aktualisieren, indem Sie die UpdateMetadataAsync
Methode verwenden, die ein MetadataChange
Objekt akzeptiert. 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.
// Create reference to the file whose metadata we want to change StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
Sie können beschreibbare Metadateneigenschaften löschen, indem Sie die leere Zeichenfolge übergeben:
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
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 als Dictionary<string, string>
angeben.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
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:
Eigentum | Typ | Änderbar in MetadataChange |
---|---|---|
Bucket | string | NEIN |
Generation | string | NEIN |
MetadataGeneration | string | NEIN |
Path | string | NEIN |
Name | string | NEIN |
SizeBytes | long | NEIN |
CreationTimeMillis | long | NEIN |
UpdatedTimeMillis | long | NEIN |
CacheControl | string | JA |
ContentDisposition | string | JA |
ContentEncoding | string | JA |
ContentLanguage | string | JA |
ContentType | string | JA |
DownloadUrl | Uri | NEIN |
DownloadUrls | IList<Uri> | NEIN |
CustomMetadataKeys | IEnumerable<string> | JA |
Nächste Schritte
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 .