ইউনিটির জন্য ক্লাউড স্টোরেজ দিয়ে ফাইল আপলোড করুন

Cloud Storage for Firebase আপনাকে ফায়ারবেস দ্বারা সরবরাহিত এবং পরিচালিত Cloud Storage বাকেটে দ্রুত এবং সহজেই ফাইল আপলোড করতে দেয়।

একটি রেফারেন্স তৈরি করুন

একটি ফাইল আপলোড করতে, প্রথমে আপনি যে ফাইলটি আপলোড করতে চান তার জন্য একটি Cloud Storage রেফারেন্স তৈরি করুন

আপনার Cloud Storage বাকেটের রুটে চাইল্ড পাথ যোগ করে আপনি একটি রেফারেন্স তৈরি করতে পারেন, অথবা আপনি Cloud Storage একটি অবজেক্ট রেফারেন্স করে বিদ্যমান gs:// অথবা https:// URL থেকে একটি রেফারেন্স তৈরি করতে পারেন।

// 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 বাকেটের রুটের রেফারেন্স সহ ডেটা আপলোড করা যাবে না। আপনার রেফারেন্সটি অবশ্যই একটি চাইল্ড URL নির্দেশ করবে।

ফাইল আপলোড করুন

একবার আপনার কাছে একটি রেফারেন্স হয়ে গেলে, আপনি দুটি উপায়ে Cloud Storage ফাইল আপলোড করতে পারেন:

  1. মেমরিতে একটি বাইট অ্যারে থেকে আপলোড করুন
  2. ডিভাইসে একটি ফাইল প্রতিনিধিত্বকারী একটি ফাইল পাথ থেকে আপলোড করুন

মেমরিতে থাকা ডেটা থেকে আপলোড করুন

PutBytesAsync() পদ্ধতি হল Cloud Storage ফাইল আপলোড করার সবচেয়ে সহজ উপায়। PutBytesAsync() একটি বাইট[] নেয় এবং একটি System.Task<Firebase.Storage.StorageMetadata> ফেরত পাঠায় যেখানে কাজটি সম্পন্ন হলে ফাইল সম্পর্কে তথ্য থাকবে। আপনি ঐচ্ছিকভাবে আপনার আপলোডের অবস্থা পর্যবেক্ষণ করতে একটি IProgress<UploadState> (সাধারণত StorageProgress<UploadState> ) ব্যবহার করতে পারেন।

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

স্থানীয় ফাইল থেকে আপলোড করুন

আপনি PutFileAsync() পদ্ধতি ব্যবহার করে ডিভাইসে স্থানীয় ফাইল আপলোড করতে পারেন, যেমন ক্যামেরা থেকে ছবি এবং ভিডিও। PutFileAsync() ফাইলের পাথ উপস্থাপন করে একটি string নেয় এবং একটি System.Task<Firebase.Storage.StorageMetadata> ফেরত পাঠায় যেখানে কাজটি সম্পন্ন হলে ফাইল সম্পর্কে তথ্য থাকবে। আপনার আপলোডের অবস্থা পর্যবেক্ষণ করতে আপনি ঐচ্ছিকভাবে একটি IProgress<UploadState> (সাধারণত StorageProgress<UploadState> ) ব্যবহার করতে পারেন।

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

যদি আপনি আপনার আপলোড সক্রিয়ভাবে পর্যবেক্ষণ করতে চান, তাহলে আপনি একটি StorageProgress ক্লাস অথবা আপনার নিজস্ব ক্লাস ব্যবহার করতে পারেন যা IProgress<UploadState> প্রয়োগ করে, PutFileAsync() বা PutBytesAsync() পদ্ধতি ব্যবহার করে। আরও তথ্যের জন্য Manage Uploads দেখুন।

ফাইল মেটাডেটা যোগ করুন

ফাইল আপলোড করার সময় আপনি মেটাডেটাও অন্তর্ভুক্ত করতে পারেন। এই মেটাডেটাতে Name , Size , এবং ContentType (সাধারণত MIME টাইপ হিসাবে পরিচিত) এর মতো সাধারণ ফাইল মেটাডেটা বৈশিষ্ট্য রয়েছে। PutFileAsync() পদ্ধতিটি স্বয়ংক্রিয়ভাবে ফাইলের নাম এক্সটেনশন থেকে কন্টেন্ট টাইপ অনুমান করে, তবে আপনি মেটাডেটাতে ContentType নির্দিষ্ট করে স্বয়ংক্রিয়ভাবে সনাক্ত করা টাইপটি ওভাররাইড করতে পারেন। যদি আপনি একটি ContentType প্রদান না করেন এবং Cloud Storage ফাইল এক্সটেনশন থেকে একটি ডিফল্ট অনুমান করতে না পারে, Cloud Storage application/octet-stream ব্যবহার করে। ফাইল মেটাডেটা সম্পর্কে আরও তথ্যের জন্য Use File Metadata বিভাগটি দেখুন।

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

আপলোডের অগ্রগতি পর্যবেক্ষণ করুন

আপলোডের অগ্রগতি পর্যবেক্ষণ করার জন্য আপনি শ্রোতাদের আপলোডের সাথে সংযুক্ত করতে পারেন। শ্রোতা স্ট্যান্ডার্ড System.IProgress<T> ইন্টারফেস অনুসরণ করে। অগ্রগতির টিকগুলির জন্য কলব্যাক হিসাবে আপনার নিজস্ব Action<T> প্রদান করতে আপনি StorageProgress ক্লাসের একটি উদাহরণ ব্যবহার করতে পারেন।

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

ত্রুটি পরিচালনা

আপলোড করার সময় ত্রুটি দেখা দেওয়ার অনেক কারণ থাকতে পারে, যার মধ্যে রয়েছে স্থানীয় ফাইলটি বিদ্যমান না থাকা, অথবা ব্যবহারকারীর পছন্দসই ফাইলটি আপলোড করার অনুমতি না থাকা। আপনি ডক্সের "হ্যান্ডেল এররস" বিভাগে ত্রুটি সম্পর্কে আরও তথ্য পেতে পারেন।

পরবর্তী পদক্ষেপ

এখন যেহেতু আপনি ফাইল আপলোড করেছেন, আসুন শিখি কিভাবে Cloud Storage থেকে সেগুলি ডাউনলোড করবেন