Mit Cloud Storage for Firebase können Sie schnell und einfach Dateien auf ein Bucket Cloud Storage angegeben und wird von Firebase verwaltet.
Referenz erstellen
Um eine Datei hochzuladen, Cloud Storage-Referenz erstellen in die Datei ein, die Sie hochladen möchten.
Sie können eine Referenz erstellen, indem Sie untergeordnete Pfade an das Stammverzeichnis Ihres
Cloud Storage Bucket, oder Sie erstellen eine Referenz aus einem vorhandenen Bucket
gs://
- oder https://
-URL, 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. Ihr Verweis muss auf eine untergeordnete URL verweisen.
Dateien hochladen
Sobald Sie eine Referenz haben, können Sie Dateien auf zwei Arten in Cloud Storage hochladen:
- Aus einem Byte-Array im Speicher hochladen
- Aus einem Dateipfad hochladen, der eine Datei auf dem Gerät darstellt
Aus Daten im Arbeitsspeicher hochladen
Die PutBytesAsync()
-Methode ist die einfachste Möglichkeit, eine Datei in Cloud Storage hochzuladen. PutBytesAsync()
nimmt ein byte[] entgegen und gibt eine System.Task<Firebase.Storage.StorageMetadata>
zurück, die Informationen zur Datei enthält, wenn die Aufgabe abgeschlossen ist. Sie können optional
IProgress<UploadState>
(normalerweise StorageProgress<UploadState>
) verwenden, um
den Upload-Status überwachen.
// 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 wie Fotos und Videos von der Kamera auf die Geräte hochladen. PutFileAsync()
macht string
der den Pfad zur Datei darstellt, und gibt einen
System.Task<Firebase.Storage.StorageMetadata>
mit
Informationen zur Datei, wenn die Aufgabe abgeschlossen ist. Sie können optional
IProgress<UploadState>
(normalerweise StorageProgress<UploadState>
) verwenden, um
den Upload-Status überwachen.
// 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 du deinen Upload aktiv beobachten möchtest, kannst du einen StorageProgress
verwenden.
oder Ihre eigene Klasse, die IProgress<UploadState>
implementiert, mit dem
PutFileAsync()
- oder PutBytesAsync()
-Methode.
Weitere Informationen finden Sie unter Uploads verwalten.
Dateimetadaten hinzufügen
Sie können auch Metadaten beim Hochladen von Dateien angeben. Diese Metadaten enthalten
Typische Dateimetadatenattribute wie Name
, Size
und ContentType
(häufig 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 finden Sie unter
den Abschnitt Dateimetadaten verwenden
finden Sie weitere Informationen zu Dateimetadaten.
// 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 überwachen
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. Du kannst eine Instanz der Klasse StorageProgress
verwenden, um deinen eigenen Action<T>
als Rückruf für Fortschrittsmarkierungen anzugeben.
// 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 in der Fehler beheben der Dokumentation.
Nächste Schritte
Nachdem Sie Dateien hochgeladen haben, erfahren Sie nun, wie Sie sie von Cloud Storage herunterladen.