Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Unity için Cloud Storage ile dosya yükleyin

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Firebase için Cloud Storage, dosyaları Firebase tarafından sağlanan ve yönetilen bir Cloud Storage paketine hızlı ve kolay bir şekilde yüklemenize olanak tanır.

Referans Oluştur

Bir dosya yüklemek için önce yüklemek istediğiniz dosyaya bir Bulut Depolama referansı oluşturun .

Cloud Storage paketinizin köküne alt yollar ekleyerek bir referans oluşturabilir veya Cloud Storage'daki bir nesneye başvuran mevcut bir gs:// veya https:// URL'sinden bir referans oluşturabilirsiniz.

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

Bulut Depolama paketinizin kök dizinine referansla veri yükleyemezsiniz. Referansınız bir alt URL'ye işaret etmelidir.

Dosyaları yükle

Bir referansınız olduğunda, dosyaları Cloud Storage'a iki şekilde yükleyebilirsiniz:

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

Bellekteki verilerden yükleme

PutBytesAsync() yöntemi, bir dosyayı Cloud Storage'a yüklemenin en basit yoludur. PutBytesAsync() bir bayt[] alır ve görev tamamlandığında dosya hakkında bilgi içeren bir System.Task<Firebase.Storage.StorageMetadata> döndürür. Yükleme durumunuzu izlemek için isteğe bağlı olarak bir IProgress<UploadState> (genellikle StorageProgress<UploadState> ) kullanabilirsiniz.

// 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 bir dosyadan yükleyin

PutFileAsync() yöntemi ile kameradan alınan fotoğraf ve video gibi yerel dosyaları cihazlara yükleyebilirsiniz. PutFileAsync() , dosyanın yolunu temsil eden bir string alır ve görev tamamlandığında dosya hakkında bilgi içeren bir System.Task<Firebase.Storage.StorageMetadata> döndürür. Yükleme durumunuzu izlemek için isteğe bağlı olarak bir IProgress<UploadState> (genellikle StorageProgress<UploadState> ) kullanabilirsiniz.

// 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 aktif olarak izlemek istiyorsanız, PutFileAsync() veya PutBytesAsync() yöntemleriyle IProgress<UploadState> uygulayan bir StorageProgress sınıfını veya kendi sınıfınızı kullanabilirsiniz. Daha fazla bilgi için Yüklemeleri Yönetme konusuna bakın.

Dosya Meta Verileri Ekle

Dosya yüklerken meta verileri de dahil edebilirsiniz. Bu meta veriler, Name , Size ve ContentType (genellikle MIME türü olarak adlandırılır) gibi tipik dosya meta verisi özelliklerini içerir. PutFileAsync() yöntemi, dosya adı uzantısından içerik türünü otomatik olarak çıkarır, ancak meta verilerde ContentType belirterek otomatik olarak algılanan türü geçersiz kılabilirsiniz. Bir ContentType sağlamazsanız ve Cloud Storage, dosya uzantısından bir varsayılan çıkaramazsa, Cloud Storage application/octet-stream kullanır. Dosya meta verileri hakkında daha fazla bilgi için Dosya Meta Verilerini Kullan 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 İlerleme Durumunu İzleme

Yüklemenin ilerlemesini izlemek için yüklemelere dinleyiciler ekleyebilirsiniz. Dinleyici, standart System.IProgress<T> arabirimini izler. İlerleme işaretleri için bir geri arama olarak kendi Action<T> 'nizi sağlamak üzere StorageProgress sınıfının bir örneğini kullanabilirsiniz.

// 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 yönetimi

Yerel dosyanın mevcut olmaması veya kullanıcının istenen dosyayı yükleme iznine sahip olmaması dahil, yükleme sırasında hataların oluşmasının birkaç nedeni vardır. Hatalar hakkında daha fazla bilgiyi belgelerin Hataları İşle bölümünde bulabilirsiniz.

Sonraki adımlar

Dosyaları yüklediğinize göre artık onları Cloud Storage'dan nasıl indireceğinizi öğrenelim.