Mit Cloud Storage for Firebase können Sie schnell und einfach Dateien in einen Cloud Storage-Bucket hochladen, der von Firebase bereitgestellt und verwaltet wird.
Referenz erstellen
Wenn Sie eine Datei hochladen möchten, müssen Sie zuerst eine Cloud Storage-Referenz für die Datei erstellen, die Sie hochladen möchten.
Sie können eine Referenz erstellen, indem Sie dem Stammverzeichnis Ihres Cloud Storage-Buckets untergeordnete Pfade anhängen. Sie können auch eine Referenz über eine vorhandene gs://
- oder https://
-URL erstellen, die auf ein Objekt in Cloud Storage verweist.
// Create a root reference StorageReference storageRef = storage.RootReference; // Create a reference to "mountains.jpg" StorageReference mountainsRef = storageRef.Child("mountains.jpg"); // Create a reference to 'images/mountains.jpg' StorageReference mountainImagesRef = storageRef.Child("images/mountains.jpg"); // While the file names are the same, the references point to different files Assert.AreEqual(mountainsRef.Name, mountainImagesRef.Name); Assert.AreNotEqual(mountainsRef.Path, mountainImagesRef.Path);
Sie können keine Daten mit einer Referenz auf die Wurzel Ihres Cloud Storage-Buckets hochladen. Die Referenz muss auf eine untergeordnete URL verweisen.
Dateien hochladen
Sobald Sie eine Referenz haben, können Sie Dateien auf zwei Arten in Cloud Storage hochladen:
- Über ein Byte-Array im Arbeitsspeicher hochladen
- Über einen Dateipfad, der eine Datei auf dem Gerät darstellt, hochladen
Aus Daten im Arbeitsspeicher hochladen
Die PutBytesAsync()
-Methode ist die einfachste Möglichkeit, eine Datei in Cloud Storage hochzuladen. PutBytesAsync()
verwendet ein byte[] und gibt ein System.Task<Firebase.Storage.StorageMetadata>
zurück, das nach Abschluss der Aufgabe Informationen zur Datei enthält. Optional kannst du eine IProgress<UploadState>
(normalerweise StorageProgress<UploadState>
) verwenden, um den Uploadstatus zu beobachten.
// Data in memory var customBytes = new byte[] { /*...*/ }; // Create a reference to the file you want to upload StorageReference riversRef = storageRef.Child("images/rivers.jpg"); // Upload the file to the path "images/rivers.jpg" riversRef.PutBytesAsync(customBytes) .ContinueWith((Task<StorageMetadata> task) => { if (task.IsFaulted || task.IsCanceled) { Debug.Log(task.Exception.ToString()); // Uh-oh, an error occurred! } else { // Metadata contains file metadata such as size, content-type, and md5hash. StorageMetadata metadata = task.Result; string md5Hash = metadata.Md5Hash; Debug.Log("Finished uploading..."); Debug.Log("md5 hash = " + md5Hash); } });
Von einer lokalen Datei hochladen
Mit der Methode PutFileAsync()
können Sie lokale Dateien wie Fotos und Videos von der Kamera auf die Geräte hochladen. PutFileAsync()
nimmt einen string
als Pfad zur Datei an und gibt eine System.Task<Firebase.Storage.StorageMetadata>
zurück, die Informationen zur Datei enthält, wenn die Aufgabe abgeschlossen ist. Optional kannst du eine IProgress<UploadState>
(normalerweise StorageProgress<UploadState>
) verwenden, um den Uploadstatus zu beobachten.
// File located on disk string localFile = "..."; // Create a reference to the file you want to upload StorageReference riversRef = storageRef.Child("images/rivers.jpg"); // Upload the file to the path "images/rivers.jpg" riversRef.PutFileAsync(localFile) .ContinueWith((Task<StorageMetadata> task) => { if (task.IsFaulted || task.IsCanceled) { Debug.Log(task.Exception.ToString()); // Uh-oh, an error occurred! } else { // Metadata contains file metadata such as size, content-type, and download URL. StorageMetadata metadata = task.Result; string md5Hash = metadata.Md5Hash; Debug.Log("Finished uploading..."); Debug.Log("md5 hash = " + md5Hash); } });
Wenn Sie den Upload aktiv überwachen möchten, können Sie eine StorageProgress
-Klasse oder eine eigene Klasse verwenden, die IProgress<UploadState>
mit den Methoden PutFileAsync()
oder PutBytesAsync()
implementiert.
Weitere Informationen finden Sie unter Uploads verwalten.
Dateimetadaten hinzufügen
Sie können auch Metadaten beim Hochladen von Dateien angeben. Diese Metadaten enthalten typische Dateimetadateneigenschaften wie Name
, Size
und ContentType
(allgemein als MIME-Typ bezeichnet). Bei der Methode PutFileAsync()
wird der Inhaltstyp automatisch anhand der Dateinamenerweiterung abgeleitet. Sie können den automatisch erkannten Typ jedoch überschreiben, indem Sie ContentType
in den Metadaten angeben. Wenn Sie keinen ContentType
angeben und Cloud Storage keinen Standard aus der Dateiendung ableiten kann, verwendet Cloud Storage application/octet-stream
. Weitere Informationen zu Dateimetadaten finden Sie im Abschnitt Dateimetadaten verwenden.
// Create storage reference StorageReference mountainsRef = storageRef.Child("images/mountains.jpg"); byte[] customBytes = new byte[] { /*...*/ }; string localFile = "..."; // Create file metadata including the content type var newMetadata = new MetadataChange(); newMetadata.ContentType = "image/jpeg"; // Upload data and metadata mountainsRef.PutBytesAsync(customBytes, newMetadata, null, CancellationToken.None); // .ContinueWithOnMainThread(... // Upload file and metadata mountainsRef.PutFileAsync(localFile, newMetadata, null, CancellationToken.None); // .ContinueWithOnMainThread(...
Uploadfortschritt im Blick behalten
Sie können Listener an Uploads anhängen, um den Fortschritt des Uploads zu verfolgen. Der Listener folgt der standardmäßigen System.IProgress<T>
-Schnittstelle. Sie können eine Instanz der StorageProgress
-Klasse verwenden, um Ihre eigene Action<T>
als Callback für Fortschrittszähler bereitzustellen.
// Start uploading a file var task = storageRef.Child("images/mountains.jpg") .PutFileAsync(localFile, null, new StorageProgress<UploadState>(state => { // called periodically during the upload Debug.Log(String.Format("Progress: {0} of {1} bytes transferred.", state.BytesTransferred, state.TotalByteCount)); }), CancellationToken.None, null); task.ContinueWithOnMainThread(resultTask => { if (!resultTask.IsFaulted && !resultTask.IsCanceled) { Debug.Log("Upload finished."); } });
Fehlerbehandlung
Es kann verschiedene Gründe für Fehler beim Upload geben, z. B. dass die lokale Datei nicht vorhanden ist oder der Nutzer keine Berechtigung zum Hochladen der gewünschten Datei hat. Weitere Informationen zu Fehlern finden Sie im Abschnitt Fehler beheben.
Nächste Schritte
Nachdem Sie Dateien hochgeladen haben, erfahren Sie nun, wie Sie sie von Cloud Storage herunterladen.