Unity için Cloud Storage ile dosya yükleme

Cloud Storage for Firebase, dosyalarınızı bir API'ye hızla ve kolayca yüklemenizi sağlar. Sağlanan Cloud Storage paketi Firebase tarafından yönetilir.

Referans Oluşturma

Dosya yüklemek için önce Cloud Storage referansı oluşturma dosyasını seçin.

Cloud Storage paketine göz atabilir veya mevcut bir paketten referans oluşturabilirsiniz. Cloud Storage'da bir nesneye referans veren gs:// veya https:// URL'si.

// 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);

Cloud Storage paketi. Referansınız bir alt URL'ye yönlendirmelidir.

Dosya Yükle

Referans aldıktan sonra dosyaları Cloud Storage'a yükleyebilirsiniz iki yöntem vardır:

  1. Bellekteki bir bayt dizisinden yükle
  2. Cihazdaki bir dosyayı temsil eden dosya yolundan yükle

Bellekteki verilerden yükle

PutBytesAsync() yöntemi, bir dosyayı şuraya yüklemenin en basit yoludur: Cloud Storage. PutBytesAsync() bir bayt alır[] ve System.Task<Firebase.Storage.StorageMetadata> değerini döndürür. görev tamamlandığında dosya hakkında bilgi içerebilir. İsterseniz IProgress<UploadState> (tipik olarak StorageProgress<UploadState>) kullanın: Yükleme durumunuzu izleyin.

// 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);
        }
    });

Yerel dosyadan yükle

Cihazlara, PutFileAsync() yöntemiyle kameranızı açın. PutFileAsync() string atıyor dosyanın yolunu temsil eder ve System.Task<Firebase.Storage.StorageMetadata> ve şunu içerir: dosya hakkında bilgi edinmeye çalışır. İsterseniz IProgress<UploadState> (tipik olarak StorageProgress<UploadState>) kullanın: Yükleme durumunuzu izleyin.

// 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);
        }
    });

Yüklemenizi etkin bir şekilde izlemek istiyorsanız StorageProgress kullanabilirsiniz veya IProgress<UploadState> uygulayan kendi sınıfınıza, PutFileAsync() veya PutBytesAsync() yöntemleri. Daha fazla bilgi için Yüklemeleri Yönetme başlıklı makaleye göz atın.

Dosya Meta Verileri Ekleme

Dosya yüklerken meta verileri de ekleyebilirsiniz. Bu meta veri şunları içerir: Name, Size ve ContentType gibi tipik dosya meta verisi özellikleri (genellikle MIME türü olarak ifade edilir). PutFileAsync() yöntemi otomatik olarak içerik türünü dosya adı uzantısından çıkarır, ancak meta veride ContentType belirtilerek otomatik algılanan tür. Google bir ContentType sağlarsanız Cloud Storage, Cloud Storage, application/octet-stream dosya uzantısını kullanır. Görüntüleyin Dosya Meta Verilerini Kullanma bölümüne bakın.

// 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(...

Yükleme İlerlemesini İzleme

Yüklemelere dinleyiciler ekleyerek yüklemelerin ilerlemesini yükleyin. Dinleyici, standart System.IProgress<T> izler. kullanır. Aşağıdakileri sağlamak için StorageProgress sınıfının bir örneğini kullanabilirsiniz: ilerleme göstergeleri için geri çağırma olarak kendi Action<T>'nızı kullanın.

// 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.");
    }
});

Hata İşleme

Yükleme sırasında hataların oluşmasının birkaç nedeni vardır: yerel dosya mevcut değil veya kullanıcının yükleme izni yok seçin. Hatalarla ilgili daha fazla bilgiyi Hataları İşleme bölümünde bulabilirsiniz.

Sonraki adımlar

Artık dosya yüklediğinize göre bunları indirin Cloud Storage'dan edinilebilir.