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

Cloud Storage for Firebase ช่วยให้คุณอัปโหลดและแชร์เนื้อหา เช่น รูปภาพ เสียง วิดีโอ และไฟล์อื่นๆ (รวมถึงเนื้อหาที่ผู้ใช้สร้างขึ้น) ซึ่งช่วยให้คุณสร้างเนื้อหาริชมีเดียลงในแอปได้ ระบบจะจัดเก็บข้อมูลของคุณไว้ในที่เก็บข้อมูล Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ระดับเอกซะไบต์ที่มีความพร้อมใช้งานสูงและมีความซ้ำซ้อนทั่วโลก 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. เลือกตำแหน่งสำหรับที่เก็บข้อมูลเริ่มต้น

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

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

ตอนนี้คุณจะดูที่เก็บข้อมูลในคอนโซล Firebase ได้แล้ว (ไปที่แท็บฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล > ไฟล์) รูปแบบชื่อที่เก็บข้อมูลเริ่มต้นคือ 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) ในฐานของโค้ดของแอปเพื่อให้มีชื่อบักเก็ต Cloud Storage เริ่มต้น

  2. เข้าถึงที่เก็บข้อมูล 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

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

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

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

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

ในกรณีการใช้งานทั้ง 2 กรณีนี้ คุณจะต้องใช้ที่เก็บข้อมูล Cloud Storage หลายที่

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

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

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

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

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

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