Flutter पर Cloud Storage का इस्तेमाल शुरू करना

'Firebase के लिए Cloud Storage' की मदद से, इमेज और वीडियो जैसे यूज़र जनरेटेड कॉन्टेंट को अपलोड और शेयर किया जा सकता है. इससे, अपने ऐप्लिकेशन में रिच मीडिया कॉन्टेंट बनाया जा सकता है. आपका डेटा, Google Cloud Storage बकेट में सेव होता है. यह एक ऐसा एक्साबाइट स्केल ऑब्जेक्ट स्टोरेज समाधान है जिसमें ज़्यादा उपलब्धता और ग्लोबल रिडंडेंसी होती है. Firebase के लिए Cloud Storage की मदद से, इन फ़ाइलों को सीधे मोबाइल डिवाइसों और वेब ब्राउज़र से सुरक्षित तरीके से अपलोड किया जा सकता है. साथ ही, खराब नेटवर्क की समस्या को आसानी से हल किया जा सकता है.

शुरू करने से पहले

  1. अगर आपने अब तक Flutter ऐप्लिकेशन बनाने के लिए शुरुआती गाइड को पूरा नहीं किया है, तो इसे ज़रूर पूरा करें. इसमें इस तरह का कॉन्टेंट शामिल है:

    • Firebase प्रोजेक्ट बनाना.

    • Flutter के लिए Firebase SDK टूल इंस्टॉल और शुरू करना.

  2. पक्का करें कि आपका Firebase प्रोजेक्ट, इस्तेमाल के हिसाब से पैसे चुकाने वाले ब्लेज़ प्लान पर हो. अगर आपने Firebase और Google Cloud का इस्तेमाल पहले कभी नहीं किया है, तो देखें कि क्या आपके पास 300 डॉलर के क्रेडिट पाने की ज़रूरी शर्तें पूरी हैं.

डिफ़ॉल्ट Cloud Storage बकेट बनाना

  1. Firebase कंसोल के नेविगेशन पैनल में, स्टोरेज चुनें.

    अगर आपका प्रोजेक्ट अब तक, 'इस्तेमाल के हिसाब से पैसे चुकाएं' वाले Blaze प्लान पर नहीं है, तो आपको प्रोजेक्ट को अपग्रेड करने के लिए कहा जाएगा.

  2. शुरू करें पर क्लिक करें.

  3. अपनी डिफ़ॉल्ट बकेट के लिए कोई जगह चुनें.

  4. अपनी डिफ़ॉल्ट बकेट के लिए Firebase Security Rules को कॉन्फ़िगर करें. ऐप्लिकेशन डेवलप करने के दौरान, सार्वजनिक ऐक्सेस के लिए नियम सेट अप करें.

  5. हो गया पर क्लिक करें.

अब Firebase कंसोल के Cloud Storage फ़ाइलें टैब में जाकर, बकेट देखी जा सकती है. आपकी बकेट के नाम का डिफ़ॉल्ट फ़ॉर्मैट, PROJECT_ID.firebasestorage.app है.

सार्वजनिक ऐक्सेस सेट अप करना

Firebase के लिए Cloud Storage, डेटा के लिए नियमों की ऐसी भाषा उपलब्ध कराता है जिससे यह तय किया जा सकता है कि आपके डेटा का स्ट्रक्चर कैसा होना चाहिए, उसे कैसे इंडेक्स किया जाना चाहिए, और आपके डेटा को कब पढ़ा और लिखा जा सकता है. डिफ़ॉल्ट रूप से, Cloud Storage में डेटा पढ़ने और उसमें बदलाव करने पर पाबंदी होती है. इसलिए, सिर्फ़ पुष्टि किए गए उपयोगकर्ता ही डेटा पढ़ सकते हैं या उसमें बदलाव कर सकते हैं. Firebase Authentication सेट अप किए बिना शुरू करने के लिए, आपके पास सार्वजनिक ऐक्सेस के लिए अपने नियम कॉन्फ़िगर करने का विकल्प है.

ऐसा करने पर, Cloud Storage का ऐक्सेस सभी के लिए खुला हो जाता है. यहां तक कि वे लोग भी आपके ऐप्लिकेशन का इस्तेमाल किए बिना, Cloud Storage का ऐक्सेस पा सकते हैं. इसलिए, पुष्टि करने की सुविधा सेट अप करते समय, अपने Cloud Storage पर फिर से पाबंदी लगाना न भूलें.

अपने ऐप्लिकेशन में Cloud Storage SDK टूल जोड़ना

  1. प्लग इन इंस्टॉल करने के लिए, अपने Flutter प्रोजेक्ट के रूट से यह कमांड चलाएं:

    flutter pub add firebase_storage
    
  2. इसके बाद, अपना Flutter ऐप्लिकेशन फिर से बनाएं:

    flutter run
    
  3. अपने Dart कोड में प्लग इन इंपोर्ट करें:

    import 'package:firebase_storage/firebase_storage.dart';
    

Cloud Storage सेट अप करना

  1. अपने Flutter प्रोजेक्ट की डायरेक्ट्री से flutterfire configure चलाएं. इससे आपके ऐप्लिकेशन के कोडबेस में Firebase कॉन्फ़िगरेशन फ़ाइल (firebase_options.dart) अपडेट हो जाती है, ताकि उसमें आपकी डिफ़ॉल्ट Cloud Storage बकेट का नाम हो.

  2. FirebaseStorage का इंस्टेंस बनाकर, अपनी Cloud Storage बकेट ऐक्सेस करें:

    final storage = FirebaseStorage.instance;
    
    // Alternatively, explicitly specify the bucket name URL.
    // final storage = FirebaseStorage.instanceFor(bucket: "gs://<var>BUCKET_NAME</var>");
    

अब आपके पास Cloud Storage का इस्तेमाल शुरू करने का विकल्प है!

अगला चरण क्या है? Cloud Storage का रेफ़रंस बनाने का तरीका जानें.

बेहतर सेटअप

इस्तेमाल के कुछ उदाहरणों के लिए, अलग से सेटअप करने की ज़रूरत होती है:

पहला इस्तेमाल का उदाहरण तब सही है, जब आपके उपयोगकर्ता दुनिया भर में हों और आपको उनके डेटा को उनके आस-पास सेव करना हो. उदाहरण के लिए, अमेरिका, यूरोप, और एशिया में बकेट बनाई जा सकती हैं, ताकि उन इलाकों के उपयोगकर्ताओं के लिए डेटा स्टोर किया जा सके और रीडायरेक्ट में लगने वाला समय कम किया जा सके.

दूसरा इस्तेमाल का उदाहरण तब मददगार होता है, जब आपके पास अलग-अलग ऐक्सेस पैटर्न वाला डेटा हो. उदाहरण के लिए: एक से ज़्यादा क्षेत्रों या क्षेत्र के हिसाब से बकेट सेट अप की जा सकती है. इसमें फ़ोटो या अक्सर ऐक्सेस किया जाने वाला कॉन्टेंट सेव किया जाता है. साथ ही, एक नेरललाइन या कोल्डलाइन बकेट सेट अप की जा सकती है. इसमें उपयोगकर्ता के बैकअप या अक्सर ऐक्सेस न किया जाने वाला कॉन्टेंट सेव किया जाता है.

इनमें से किसी भी मामले में, आपको एक से ज़्यादा Cloud Storage बकेट का इस्तेमाल करना होगा.

तीसरा इस्तेमाल का उदाहरण तब काम आता है, जब Google Drive जैसे ऐप्लिकेशन को बनाया जा रहा हो. इस ऐप्लिकेशन में, उपयोगकर्ताओं को एक से ज़्यादा खातों से लॉग इन करने की सुविधा मिलती है. उदाहरण के लिए, निजी खाता और काम से जुड़ा खाता. हर दूसरे खाते की पुष्टि करने के लिए, कस्टम Firebase ऐप्लिकेशन इंस्टेंस का इस्तेमाल किया जा सकता है.

एक से ज़्यादा Cloud Storage बकेट का इस्तेमाल करना

अगर आपको ऊपर दिए गए डिफ़ॉल्ट Cloud Storage बकेट के अलावा किसी दूसरे बकेट का इस्तेमाल करना है या एक ही ऐप्लिकेशन में कई Cloud Storage बकेट का इस्तेमाल करना है, तो FirebaseStorage का ऐसा इंस्टेंस बनाएं जो आपकी कस्टम बकेट का रेफ़रंस देता हो:

// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "gs://my-custom-bucket");

इंपोर्ट की गई बकेट के साथ काम करना

किसी मौजूदा Cloud Storage बकेट को Firebase में इंपोर्ट करते समय, आपको gsutil टूल का इस्तेमाल करके, Firebase को इन फ़ाइलों को ऐक्सेस करने की अनुमति देनी होगी. यह टूल, Google Cloud SDK में शामिल है:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://YOUR-CLOUD-STORAGE-BUCKET

Firebase प्रोजेक्ट के बारे में जानकारी में बताए गए तरीके से, अपना प्रोजेक्ट नंबर देखा जा सकता है.

इसका असर, हाल ही में बनाई गई बकेट पर नहीं पड़ता. इसकी वजह यह है कि उनमें डिफ़ॉल्ट रूप से ऐक्सेस कंट्रोल सेट होता है, ताकि Firebase को अनुमति दी जा सके. यह कुछ समय के लिए है. आने वाले समय में, यह कार्रवाई अपने-आप की जाएगी.

कस्टम Firebase ऐप्लिकेशन का इस्तेमाल करना

अगर कस्टम FirebaseApp का इस्तेमाल करके, ज़्यादा जटिल ऐप्लिकेशन बनाया जा रहा है, तो उस ऐप्लिकेशन के साथ शुरू किए गए FirebaseStorage का इंस्टेंस बनाया जा सकता है:

// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);

अगले चरण