Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Unggah file dengan Cloud Storage untuk Unity

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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:

  1. Unggah dari larik byte di memori
  2. 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.