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
Um eine Datei hochzuladen, erstellen Sie zuerst eine Cloud Storage Referenz zur Datei, die Sie hochladen möchten.
Sie können eine Referenz erstellen, indem Sie untergeordnete Pfade an den Stamm Ihres
Cloud Storage Buckets anhängen. Alternativ können Sie eine Referenz aus einer vorhandenen
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 zum Stamm Ihres Cloud Storage Buckets hochladen. Ihre Referenz muss auf eine untergeordnete URL verweisen.
Dateien hochladen
Sobald Sie eine Referenz haben, können Sie Dateien auf Cloud Storage zwei Arten hochladen:
- Aus einem Byte-Array im Arbeitsspeicher hochladen
- Über einen Dateipfad hochladen, der eine Datei auf dem Gerät darstellt
Aus Daten im Arbeitsspeicher hochladen
Die Methode PutBytesAsync() ist die einfachste Möglichkeit, eine Datei in
Cloud Storage hochzuladen. PutBytesAsync() verwendet ein Byte-Array
und gibt ein System.Task<Firebase.Storage.StorageMetadata> zurück, das nach Abschluss der Aufgabe Informationen zur Datei enthält. Optional können Sie
IProgress<UploadState> (in der Regel StorageProgress<UploadState>) verwenden, um
den Upload-Status 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); } });
Aus einer lokalen Datei hochladen
Mit der Methode PutFileAsync() können Sie lokale Dateien auf den Geräten hochladen, z. B. Fotos und Videos von der Kamera. PutFileAsync() verwendet ein string
, das den Pfad zur Datei darstellt, und gibt ein
System.Task<Firebase.Storage.StorageMetadata> zurück, das nach Abschluss der Aufgabe
Informationen zur Datei enthält. Optional können Sie
IProgress<UploadState> (in der Regel StorageProgress<UploadState>) verwenden, um
den Upload-Status 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 beobachten möchten, können Sie mit den
PutFileAsync() oder PutBytesAsync() Methoden eine StorageProgress
Klasse oder eine eigene Klasse verwenden, die IProgress<UploadState> implementiert.
Weitere Informationen finden Sie unter Uploads verwalten.
Dateimetadaten hinzufügen
Sie können beim Hochladen von Dateien auch Metadaten einfügen. Diese Metadaten enthalten typische Dateimetadaten-Attribute wie Name, Size und ContentType (allgemein als MIME-Typ bezeichnet). Die Methode PutFileAsync() leitet den Inhaltstyp automatisch aus der Dateinamenerweiterung ab. 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 Standardwert aus der Dateierweiterung 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(...
Upload-Fortschritt beobachten
Sie können Listener an Uploads anhängen, um den Fortschritt des Uploads zu beobachten. Der Listener folgt der StandardSystem.IProgress<T>
Schnittstelle. Sie können eine Instanz der Klasse StorageProgress verwenden, um
Ihre eigene Action<T> als Callback für Fortschritts-Ticks 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 gibt eine Reihe von Gründen, warum beim Hochladen Fehler auftreten können. Dazu gehören beispielsweise, 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 behandeln in der Dokumentation.
Nächste Schritte
Nachdem Sie nun Dateien hochgeladen haben, erfahren Sie, wie Sie sie herunterladen aus Cloud Storage.