เริ่มต้นใช้งาน Cloud Storage บน Flutter

Cloud Storage for Firebase ช่วยให้คุณอัปโหลดและแชร์เนื้อหาที่ผู้ใช้สร้างขึ้น เช่น รูปภาพและวิดีโอ ซึ่งช่วยให้คุณสร้างเนื้อหามัลติมีเดียที่สมบูรณ์ลงในแอปได้ ระบบจะจัดเก็บข้อมูลของคุณไว้ใน Bucket ของ Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ขนาด exabyte ที่มีความพร้อมใช้งานสูงและมีการสำรองข้อมูลทั่วโลก Cloud Storage for Firebase ช่วยให้คุณอัปโหลดไฟล์เหล่านี้จากอุปกรณ์เคลื่อนที่และเว็บเบราว์เซอร์ได้อย่างปลอดภัย และจัดการเครือข่ายที่ไม่เสถียรได้อย่างง่ายดาย

ก่อนเริ่มต้น

  1. ตรวจสอบว่าคุณได้ทำตามคู่มือเริ่มต้นใช้งานสำหรับแอป Flutter แล้ว หากยังไม่ได้ดำเนินการ ซึ่งรวมถึงสิ่งต่อไปนี้

    • การสร้างโปรเจ็กต์ Firebase

    • การติดตั้งและเริ่มต้นใช้งาน Firebase SDK สำหรับ Flutter

  2. ตรวจสอบว่าโปรเจ็กต์ Firebase ของคุณใช้แผนการกำหนดราคา Blaze แบบจ่ายตามการใช้งานจริง ซึ่ง เป็นข้อกำหนดในการใช้ Cloud Storage for Firebase หากเพิ่งเคยใช้ Firebase และ Google Cloud ให้ตรวจสอบว่าคุณมีสิทธิ์รับ เครดิตช่วงทดลองใช้ฟรี$300 หรือไม่

สร้าง Bucket ของ Cloud Storage เริ่มต้น

  1. ในคอนโซลFirebase ให้ไปที่ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล

    หากโปรเจ็กต์ของคุณยังไม่ได้ใช้แผนการกำหนดราคา Blaze แบบจ่ายตามการใช้งานจริง ระบบจะแจ้งให้คุณอัปเกรดโปรเจ็กต์

  2. คลิกเริ่มต้นใช้งาน

  3. เลือก ตำแหน่ง ของ Bucket เริ่มต้น

  4. กำหนดค่า Firebase Security Rules สำหรับ Bucket เริ่มต้น ในระหว่างการพัฒนา ให้พิจารณา ตั้งค่ากฎสำหรับการเข้าถึงแบบสาธารณะ

  5. คลิกเสร็จสิ้น

ตอนนี้คุณสามารถดู Bucket ในคอนโซล Firebase ได้แล้ว (ไปที่แท็บ ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล > ไฟล์) รูปแบบชื่อ Bucket เริ่มต้นคือ PROJECT_ID.firebasestorage.app

ตั้งค่าการเข้าถึงแบบสาธารณะ

Cloud Storage for Firebase มีภาษาของกฎแบบประกาศที่ช่วยให้คุณกำหนดโครงสร้างของข้อมูล วิธีจัดทำดัชนี และเวลาที่สามารถอ่านและเขียนข้อมูลได้ โดยค่าเริ่มต้น ระบบจะจำกัดสิทธิ์เข้าถึงแบบอ่านและเขียนใน Cloud Storage เพื่อให้เฉพาะผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์เท่านั้นที่อ่านหรือเขียนข้อมูลได้ หากต้องการเริ่มต้นใช้งานโดยไม่ต้องตั้งค่า การตรวจสอบสิทธิ์ Firebase คุณสามารถ กำหนดค่ากฎสำหรับการเข้าถึงแบบสาธารณะได้

การดำเนินการนี้จะทำให้ 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. เรียกใช้ flutterfire configure จากไดเรกทอรีโปรเจ็กต์ Flutter ซึ่งจะอัปเดตไฟล์การกำหนดค่า Firebase (firebase_options.dart) ในฐานของโค้ดของแอปเพื่อให้มีชื่อ Bucket เริ่มต้นของคุณCloud Storage

  2. เข้าถึง Bucket ของ Cloud Storage โดยสร้างอินสแตนซ์ของ FirebaseStorage ดังนี้

    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

การตั้งค่าขั้นสูง

มีกรณีการใช้งานบางกรณีที่ต้องมีการตั้งค่าเพิ่มเติม ดังนี้

กรณีการใช้งานแรกเหมาะอย่างยิ่งหากคุณมีผู้ใช้ทั่วโลกและต้องการจัดเก็บข้อมูลของผู้ใช้ไว้ใกล้กับผู้ใช้ ตัวอย่างเช่น คุณสามารถสร้าง Bucket ในสหรัฐอเมริกา ยุโรป และเอเชียเพื่อจัดเก็บข้อมูลสำหรับผู้ใช้ในภูมิภาคเหล่านั้นเพื่อลดเวลาในการตอบสนอง

กรณีการใช้งานที่ 2 มีประโยชน์หากคุณมีข้อมูลที่มีรูปแบบการเข้าถึงที่แตกต่างกัน ตัวอย่างเช่น คุณสามารถตั้งค่า Bucket แบบหลายภูมิภาคหรือแบบภูมิภาคที่จัดเก็บรูปภาพหรือเนื้อหาอื่นๆ ที่มีการเข้าถึงบ่อย และ Bucket แบบ Nearline หรือ Coldline ที่จัดเก็บข้อมูลสำรองของผู้ใช้หรือเนื้อหาอื่นๆ ที่มีการเข้าถึงไม่บ่อย

ในกรณีการใช้งานเหล่านี้ คุณจะต้องใช้ Bucket ของ Cloud Storage หลายรายการ

กรณีการใช้งานที่ 3 มีประโยชน์หากคุณกำลังสร้างแอป เช่น Google ไดรฟ์ ซึ่งช่วยให้ผู้ใช้มีบัญชีที่เข้าสู่ระบบหลายบัญชีได้ (เช่น บัญชีส่วนตัวและบัญชีงาน) คุณสามารถ ใช้อินสแตนซ์ Firebase App ที่กำหนดเอง เพื่อตรวจสอบสิทธิ์บัญชีเพิ่มเติมแต่ละบัญชีได้

ใช้ Bucket ของ Cloud Storage หลายรายการ

หากต้องการใช้ Bucket ของ Cloud Storage อื่นนอกเหนือจาก Bucket เริ่มต้นที่ระบุไว้ข้างต้น หรือใช้ Bucket ของ Cloud Storage หลายรายการในแอปเดียว คุณสามารถสร้างอินสแตนซ์ของ FirebaseStorage ที่อ้างอิง Bucket ที่กำหนดเองได้ดังนี้

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

การทำงานกับ Bucket ที่นำเข้า

เมื่อนำเข้า Bucket ของ Cloud Storage ที่มีอยู่ไปยัง Firebase คุณจะต้อง ให้สิทธิ์ Firebase ในการเข้าถึงไฟล์เหล่านี้โดยใช้เครื่องมือ gsutil ซึ่งรวมอยู่ใน Google Cloud SDK ดังนี้

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

คุณดูหมายเลขโปรเจ็กต์ได้ตามที่อธิบายไว้ใน บทนำเกี่ยวกับ โปรเจ็กต์ Firebase

การดำเนินการนี้จะไม่ส่งผลต่อ Bucket ที่สร้างขึ้นใหม่ เนื่องจาก Bucket เหล่านั้นมีการตั้งค่าการควบคุมการเข้าถึงเริ่มต้นเป็นอนุญาต Firebase นี่เป็นมาตรการชั่วคราวและระบบจะดำเนินการโดยอัตโนมัติในอนาคต

ใช้ Firebase App ที่กำหนดเอง

หากคุณกำลังสร้างแอปที่ซับซ้อนมากขึ้นโดยใช้ FirebaseApp ที่กำหนดเอง คุณสามารถสร้างอินสแตนซ์ของ FirebaseStorage ที่เริ่มต้นใช้งานด้วยแอปดังกล่าวได้ดังนี้

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

ขั้นตอนถัดไป

  • เตรียมพร้อมเปิดตัวแอป โดยทำดังนี้
    • เปิดใช้ App Check เพื่อช่วยให้มั่นใจได้ว่าเฉพาะ แอปของคุณเท่านั้นที่จะเข้าถึง Bucket ของพื้นที่เก็บข้อมูลได้
    • ตั้งค่าการแจ้งเตือนงบประมาณ สำหรับโปรเจ็กต์ในคอนโซล Google Cloud
    • ตรวจสอบแดชบอร์ด การใช้งานและการเรียกเก็บเงิน ในคอนโซล Firebase เพื่อดูภาพรวมการใช้งานโปรเจ็กต์ ในบริการ Firebase หลายรายการ นอกจากนี้ คุณยังไปที่ แดชบอร์ด _การใช้งาน_ของ Cloud Storageเพื่อดูข้อมูลการใช้งานโดยละเอียดเพิ่มเติมได้ด้วย
    • ตรวจสอบรายการตรวจสอบการเปิดตัว Firebase