Cloud Storage for Firebase memungkinkan Anda mengunggah file dengan cepat dan mudah ke keranjang Cloud Storage yang disediakan dan dikelola oleh Firebase.
Buat Referensi
Untuk mengupload file, terlebih dahulu buat referensi Cloud Storage ke file yang ingin Anda upload.
Anda dapat membuat referensi dengan menambahkan jalur turunan ke root bucket Cloud Storage Anda, atau Anda dapat membuat referensi dari URL gs://
atau https://
yang sudah ada yang mereferensikan objek di Cloud Storage.
// 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);
Anda tidak dapat mengupload data dengan referensi ke root bucket Cloud Storage Anda. Referensi Anda harus mengarah ke URL turunan.
Unggah berkas
Setelah memiliki referensi, Anda dapat mengupload file ke Cloud Storage dengan dua cara:
- Unggah dari larik byte di memori
- Unggah dari jalur file yang mewakili file di perangkat
Unggah dari data dalam memori
Metode PutBytesAsync()
adalah cara termudah untuk mengupload file ke Cloud Storage. PutBytesAsync()
mengambil byte[] dan mengembalikan System.Task<Firebase.Storage.StorageMetadata>
yang akan berisi informasi tentang file saat tugas selesai. Secara opsional, Anda dapat menggunakan IProgress<UploadState>
(biasanya StorageProgress<UploadState>
) untuk memantau status unggahan Anda.
// 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); } });
Unggah dari file lokal
Anda dapat mengupload file lokal di perangkat, seperti foto dan video dari kamera, dengan metode PutFileAsync()
. PutFileAsync()
mengambil string
yang mewakili jalur ke file dan mengembalikan System.Task<Firebase.Storage.StorageMetadata>
yang akan berisi informasi tentang file saat tugas selesai. Secara opsional, Anda dapat menggunakan IProgress<UploadState>
(biasanya StorageProgress<UploadState>
) untuk memantau status unggahan Anda.
// 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); } });
Jika ingin memantau upload secara aktif, Anda dapat menggunakan kelas StorageProgress
atau kelas Anda sendiri yang mengimplementasikan IProgress<UploadState>
, dengan metode PutFileAsync()
atau PutBytesAsync()
. Lihat Mengelola Unggahan untuk informasi lebih lanjut.
Tambahkan File Metadata
Anda juga dapat menyertakan metadata saat mengunggah file. Metadata ini berisi properti metadata file umum seperti Name
, Size
, dan ContentType
(umumnya disebut sebagai tipe MIME). Metode PutFileAsync()
secara otomatis menyimpulkan tipe konten dari ekstensi nama file, tetapi Anda bisa mengganti tipe yang terdeteksi otomatis dengan menentukan ContentType
di metadata. Jika Anda tidak menyediakan ContentType
dan Cloud Storage tidak dapat menyimpulkan default dari ekstensi file, Cloud Storage akan menggunakan application/octet-stream
. Lihat bagian Menggunakan Metadata File untuk informasi selengkapnya tentang metadata file.
// 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(...
Pantau Kemajuan Pengunggahan
Anda dapat melampirkan pendengar ke unggahan untuk memantau kemajuan unggahan. Pendengar mengikuti antarmuka System.IProgress<T>
standar. Anda dapat menggunakan instance dari kelas StorageProgress
, untuk memberikan Action<T>
Anda sendiri sebagai panggilan balik untuk tanda kemajuan.
// 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."); } });
Penanganan Kesalahan
Ada sejumlah alasan mengapa kesalahan dapat terjadi saat mengunggah, termasuk file lokal tidak ada, atau pengguna tidak memiliki izin untuk mengunggah file yang diinginkan. Anda dapat menemukan informasi lebih lanjut tentang kesalahan di bagian Menangani Kesalahan pada dokumen.
Langkah selanjutnya
Setelah Anda mengupload file, mari pelajari cara mendownloadnya dari Cloud Storage.