Cloud Storage for Firebase আপনাকে 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 বাকেটের মূলের রেফারেন্স সহ ডেটা আপলোড করতে পারবেন না। আপনার রেফারেন্স অবশ্যই চাইল্ড ইউআরএল নির্দেশ করবে।
ফাইল আপলোড করুন
একবার আপনার কাছে একটি রেফারেন্স হয়ে গেলে, আপনি দুটি উপায়ে Cloud Storage ফাইল আপলোড করতে পারেন:
- মেমরিতে একটি বাইট অ্যারে থেকে আপলোড করুন
- ডিভাইসে একটি ফাইল প্রতিনিধিত্বকারী একটি ফাইল পাথ থেকে আপলোড করুন৷
মেমরিতে ডেটা থেকে আপলোড করুন
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); } });
আপনি যদি আপনার আপলোডকে সক্রিয়ভাবে নিরীক্ষণ করতে চান, তাহলে আপনি PutFileAsync()
বা PutBytesAsync()
পদ্ধতির সাথে IProgress<UploadState>
প্রয়োগ করে এমন একটি StorageProgress
ক্লাস বা আপনার নিজের ক্লাস ব্যবহার করতে পারেন। আরো তথ্যের জন্য আপলোড পরিচালনা দেখুন.
ফাইল মেটাডেটা যোগ করুন
আপনি ফাইল আপলোড করার সময় মেটাডেটাও অন্তর্ভুক্ত করতে পারেন। এই মেটাডেটাতে সাধারণ ফাইল মেটাডেটা বৈশিষ্ট্য রয়েছে যেমন Name
, Size
, এবং ContentType
(সাধারণত MIME প্রকার হিসাবে উল্লেখ করা হয়)। PutFileAsync()
পদ্ধতি স্বয়ংক্রিয়ভাবে ফাইলের নাম এক্সটেনশন থেকে বিষয়বস্তুর ধরন অনুমান করে, কিন্তু আপনি মেটাডেটাতে ContentType
উল্লেখ করে স্বয়ংক্রিয়ভাবে সনাক্ত হওয়া প্রকারটিকে ওভাররাইড করতে পারেন। আপনি যদি একটি ContentType
প্রদান না করেন এবং Cloud Storage ফাইল এক্সটেনশন থেকে একটি ডিফল্ট অনুমান করতে পারে না, Cloud Storage application/octet-stream
ব্যবহার করে। ফাইল মেটাডেটা সম্পর্কে আরও তথ্যের জন্য ফাইল মেটাডেটা ব্যবহার করুন বিভাগটি দেখুন।
// 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 থেকে ডাউনলোড করতে হয়৷