Cloud Storage for Firebase, Firebase tarafından sağlanan ve yönetilen bir Cloud Storage paketine dosyaları hızlı ve kolay bir şekilde yüklemenize olanak tanır.
Referans Oluşturma
Dosya yüklemek için önce yüklemek istediğiniz dosyanın Cloud Storage referansını oluşturun.
Alt yolları Cloud Storage paketinizin köküne ekleyerek referans oluşturabilir veya Cloud Storage içindeki bir nesneye referans veren mevcut bir Cloud Storage ya da https://
URL'den referans oluşturabilirsiniz.gs://
// 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 paketinize ait köke referans veren verileri yükleyemezsiniz. Referansınız bir alt URL'ye yönlendirmelidir.
Dosya Yükle
Referansınız olduğunda Cloud Storage'ya iki şekilde dosya yükleyebilirsiniz:
- Bellekteki bir bayt dizisinden yükleme
- Cihazdaki bir dosyayı temsil eden dosya yolundan yükleme
Bellekteki verilerden yükleme
PutBytesAsync()
yöntemi, Cloud Storage'ye dosya yüklemenin en basit yoludur. PutBytesAsync()
, byte[] alır ve görev tamamlandığında dosya hakkında bilgi içeren bir System.Task<Firebase.Storage.StorageMetadata>
döndürür. İsteğe bağlı olarak yükleme durumunuzu izlemek için 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ükleme
PutFileAsync()
yöntemini kullanarak cihazlardaki yerel dosyaları (ör. kameradan alınan fotoğraf ve videolar) 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. İsteğe bağlı olarak yükleme durumunuzu izlemek için 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 etkin bir şekilde izlemek istiyorsanız StorageProgress
sınıfını veya IProgress<UploadState>
'yi uygulayan kendi sınıfınızı PutFileAsync()
ya da PutBytesAsync()
yöntemleriyle kullanabilirsiniz.
Daha fazla bilgi için Yüklemeleri Yönetme başlıklı makaleyi inceleyin.
Dosya meta verileri ekleme
Dosya yüklerken meta verileri de ekleyebilirsiniz. Bu meta veriler, Name
, Size
ve ContentType
gibi (genellikle MIME türü olarak adlandırılır) tipik dosya meta veri ö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. ContentType
sağlamazsanız ve Cloud Storage, dosya uzantısından varsayılan bir değer çıkaramazsa Cloud Storage, application/octet-stream
değerini kullanır. Dosya meta verileri hakkında daha fazla bilgi için 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 ilerleme durumunu izleme
Yükleme işleminin ilerleme durumunu izlemek için yüklemelere dinleyiciler ekleyebilirsiniz. Dinleyici, standart System.IProgress<T>
arayüzünü kullanır. İlerleme tikleri için geri çağırma olarak kendi Action<T>
öğenizi 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 İşleme
Yükleme sırasında hataların oluşmasının çeşitli nedenleri vardır. Örneğin, yerel dosya mevcut olmayabilir veya kullanıcının istenen dosyayı yükleme izni olmayabilir. Hatalar hakkında daha fazla bilgiyi dokümanların Hataları İşleme bölümünde bulabilirsiniz.
Sonraki adımlar
Dosyaları yüklediğinize göre şimdi Cloud Storage'dan nasıl indireceğinizi öğrenelim.