Firebase-এর জন্য ক্লাউড স্টোরেজ আপনাকে Firebase দ্বারা প্রদত্ত এবং পরিচালিত ক্লাউড স্টোরেজ বাকেট থেকে দ্রুত এবং সহজেই ফাইল ডাউনলোড করতে দেয়।
একটি রেফারেন্স তৈরি করুন
একটি ফাইল ডাউনলোড করতে, প্রথমে আপনি যে ফাইলটি ডাউনলোড করতে চান তার একটি ক্লাউড স্টোরেজ রেফারেন্স তৈরি করুন ।
আপনার ক্লাউড স্টোরেজ বাকেটের রুটে চাইল্ড পাথ যোগ করে আপনি একটি রেফারেন্স তৈরি করতে পারেন, অথবা আপনি ক্লাউড স্টোরেজের কোনও অবজেক্ট রেফারেন্স করে বিদ্যমান gs://
অথবা https://
URL থেকে একটি রেফারেন্স তৈরি করতে পারেন।
// Create a storage reference from our app
final storageRef = FirebaseStorage.instance.ref();
// Create a reference with an initial file path and name
final pathReference = storageRef.child("images/stars.jpg");
// Create a reference to a file from a Google Cloud Storage URI
final gsReference =
FirebaseStorage.instance.refFromURL("gs://YOUR_BUCKET/images/stars.jpg");
// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
final httpsReference = FirebaseStorage.instance.refFromURL(
"https://firebasestorage.googleapis.com/b/YOUR_BUCKET/o/images%20stars.jpg");
ফাইল ডাউনলোড করুন
একবার আপনার কাছে একটি রেফারেন্স থাকলে, আপনি getData()
কল করে ক্লাউড স্টোরেজ থেকে ফাইলগুলি ডাউনলোড করতে পারেন। আপনি যদি অন্য লাইব্রেরি থেকে ফাইলটি ডাউনলোড করতে চান, তাহলে আপনি getDownloadUrl()
দিয়ে একটি ডাউনলোড URL পেতে পারেন।
মেমোরিতে ডাউনলোড করুন
getData()
পদ্ধতি ব্যবহার করে ফাইলটি UInt8List
এ ডাউনলোড করুন। এটি একটি ফাইল ডাউনলোড করার সবচেয়ে সহজ উপায়, তবে এটি আপনার ফাইলের সম্পূর্ণ বিষয়বস্তু মেমোরিতে লোড করতে হবে। আপনি যদি আপনার অ্যাপের উপলব্ধ মেমোরির চেয়ে বড় ফাইলের অনুরোধ করেন, তাহলে আপনার অ্যাপটি ক্র্যাশ হয়ে যাবে। মেমোরির সমস্যা থেকে রক্ষা পেতে, getData()
ডাউনলোড করতে সর্বাধিক পরিমাণ বাইট নেয়। আপনার অ্যাপটি যে আকারটি পরিচালনা করতে পারে তার সর্বোচ্চ আকার সেট করুন, অথবা অন্য ডাউনলোড পদ্ধতি ব্যবহার করুন।
final islandRef = storageRef.child("images/island.jpg");
try {
const oneMegabyte = 1024 * 1024;
final Uint8List? data = await islandRef.getData(oneMegabyte);
// Data for "images/island.jpg" is returned, use this as needed.
} on FirebaseException catch (e) {
// Handle any errors.
}
স্থানীয় ফাইলে ডাউনলোড করুন
writeToFile()
পদ্ধতিটি সরাসরি একটি স্থানীয় ডিভাইসে ফাইল ডাউনলোড করে। যদি আপনার ব্যবহারকারীরা অফলাইনে থাকাকালীন ফাইলটিতে অ্যাক্সেস পেতে চান অথবা অন্য কোনও অ্যাপে ফাইলটি শেয়ার করতে চান তবে এটি ব্যবহার করুন। writeToFile()
একটি DownloadTask
প্রদান করে যা আপনি আপনার ডাউনলোড পরিচালনা করতে এবং ডাউনলোডের অবস্থা পর্যবেক্ষণ করতে ব্যবহার করতে পারেন।
final islandRef = storageRef.child("images/island.jpg");
final appDocDir = await getApplicationDocumentsDirectory();
final filePath = "${appDocDir.absolute}/images/island.jpg";
final file = File(filePath);
final downloadTask = islandRef.writeToFile(file);
downloadTask.snapshotEvents.listen((taskSnapshot) {
switch (taskSnapshot.state) {
case TaskState.running:
// TODO: Handle this case.
break;
case TaskState.paused:
// TODO: Handle this case.
break;
case TaskState.success:
// TODO: Handle this case.
break;
case TaskState.canceled:
// TODO: Handle this case.
break;
case TaskState.error:
// TODO: Handle this case.
break;
}
});
URL এর মাধ্যমে ডেটা ডাউনলোড করুন
যদি আপনার ইতিমধ্যেই URL-এর উপর ভিত্তি করে ডাউনলোড পরিকাঠামো থাকে, অথবা শুধুমাত্র একটি URL শেয়ার করতে চান, তাহলে আপনি ক্লাউড স্টোরেজ রেফারেন্সে getDownloadURL()
পদ্ধতিতে কল করে একটি ফাইলের ডাউনলোড URL পেতে পারেন।
final imageUrl =
await storageRef.child("users/me/profile.png").getDownloadURL();
হ্যান্ডেল ত্রুটি
ডাউনলোড করার সময় ত্রুটি দেখা দেওয়ার অনেক কারণ থাকতে পারে, যার মধ্যে রয়েছে ফাইলটি বিদ্যমান না থাকা, অথবা ব্যবহারকারীর পছন্দসই ফাইলটি অ্যাক্সেস করার অনুমতি না থাকা। ত্রুটি সম্পর্কে আরও তথ্য ডক্সের "হ্যান্ডেল এররস" বিভাগে পাওয়া যাবে।
সম্পূর্ণ উদাহরণ
ত্রুটি পরিচালনা সহ একটি ডাউনলোডের একটি সম্পূর্ণ উদাহরণ নীচে দেখানো হয়েছে:
final islandRef = storageRef.child("images/island.jpg");
final appDocDir = await getApplicationDocumentsDirectory();
final filePath = "${appDocDir.absolute}/images/island.jpg";
final file = File(filePath);
final downloadTask = islandRef.writeToFile(file);
downloadTask.snapshotEvents.listen((taskSnapshot) {
switch (taskSnapshot.state) {
case TaskState.running:
// TODO: Handle this case.
break;
case TaskState.paused:
// TODO: Handle this case.
break;
case TaskState.success:
// TODO: Handle this case.
break;
case TaskState.canceled:
// TODO: Handle this case.
break;
case TaskState.error:
// TODO: Handle this case.
break;
}
});
আপনি ক্লাউড স্টোরেজে সংরক্ষিত ফাইলগুলির মেটাডেটা পেতে এবং আপডেট করতে পারেন।