Flutter पर Cloud Storage की मदद से फ़ाइलें डाउनलोड करना

Firebase के लिए Cloud Storage आपको जल्दी और आसानी से डाउनलोड करने देता है Cloud Storage में मौजूद फ़ाइलें Firebase उपलब्ध कराने और मैनेज करने के लिए बकेट.

रेफ़रंस बनाना

फ़ाइल डाउनलोड करने के लिए, पहले Cloud Storage का रेफ़रंस बनाएं उस फ़ाइल को डाउनलोड करें जिसे आपको डाउनलोड करना है.

आप अपने चैनल के रूट में चाइल्ड पाथ को जोड़कर रेफ़रंस बना सकते हैं Cloud Storage बकेट या किसी मौजूदा रिपोर्ट से पहचान फ़ाइल बनाई जा सकती है Cloud Storage में किसी ऑब्जेक्ट का रेफ़रंस देने वाला gs:// या https:// यूआरएल.

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

फ़ाइलें डाउनलोड करें

पहचान फ़ाइल मिलने के बाद, Cloud Storage से फ़ाइलें डाउनलोड की जा सकती हैं getData() या getStream() पर कॉल करके. अगर आपको फ़ाइल डाउनलोड करनी है, तो तो आपको getDownloadUrl() के साथ डाउनलोड यूआरएल मिल सकता है.

मेमोरी में डाउनलोड करें

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 को Cloud Storage के रेफ़रंस के लिए getDownloadURL() तरीका.

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

स्टोर की गई फ़ाइलों के लिए भी मेटाडेटा मिल सकता है और उन्हें अपडेट किया जा सकता है Cloud Storage में.