Cloud Storage for Firebase ช่วยให้คุณอัปโหลดและแชร์เนื้อหาที่ผู้ใช้สร้างขึ้น เช่น รูปภาพและวิดีโอ ซึ่งช่วยให้คุณสร้างเนื้อหาริชมีเดียลงในแอปได้ ระบบจะจัดเก็บข้อมูลของคุณไว้ในที่เก็บข้อมูล Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ระดับเอกซะไบต์ที่มีความพร้อมใช้งานสูงและมีความซ้ำซ้อนทั่วโลก Cloud Storage for Firebase ช่วยให้คุณอัปโหลดไฟล์เหล่านี้ได้อย่างปลอดภัยจากอุปกรณ์เคลื่อนที่และเว็บเบราว์เซอร์โดยตรง และจัดการกับเครือข่ายที่ไม่เสถียรได้อย่างง่ายดาย
ก่อนเริ่มต้น
หากยังไม่ได้ดำเนินการ โปรดอ่านคู่มือเริ่มต้นใช้งานสำหรับแอป Android ให้เสร็จสมบูรณ์ ซึ่งรวมถึงเนื้อหาต่อไปนี้
การสร้างโปรเจ็กต์ Firebase
ลงทะเบียนแอป Android กับโปรเจ็กต์ และเชื่อมต่อแอปกับ Firebase โดยเพิ่มทรัพยากร Dependency ของ Firebase, ปลั๊กอินบริการของ Google และ ไฟล์การกำหนดค่า Firebase (
google-services.json) ลงในแอป
ตรวจสอบว่าโปรเจ็กต์ Firebase ใช้แพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ ซึ่งเป็นข้อกำหนดในการใช้ Cloud Storage for Firebase หากเพิ่งเคยใช้ Firebase และ Google Cloud ให้ตรวจสอบว่าคุณมีสิทธิ์รับเครดิตมูลค่า$300 หรือไม่
สร้างที่เก็บข้อมูล Cloud Storage เริ่มต้น
ในคอนโซล Firebase ให้ไปที่ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล
หากโปรเจ็กต์ยังไม่ได้ใช้แพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ ระบบจะแจ้งให้คุณอัปเกรดโปรเจ็กต์
คลิกเริ่มต้นใช้งาน
เลือกตำแหน่งสำหรับที่เก็บข้อมูลเริ่มต้น
ที่เก็บข้อมูลใน
,US-CENTRAL1 และUS-EAST1 สามารถใช้ประโยชน์จากระดับ"ฟรีตลอด" สำหรับ Google Cloud Storage ส่วนที่เก็บข้อมูลในตำแหน่งอื่นๆ ทั้งหมดจะเป็นไปตามราคาและการใช้งานของ Google Cloud StorageUS-WEST1หากต้องการ คุณสามารถสร้างหลายบั็กเก็ตในภายหลังได้ โดยแต่ละบั็กเก็ตจะมีตำแหน่งของตัวเอง
กำหนดค่า Firebase Security Rules สำหรับที่เก็บข้อมูลเริ่มต้น ในระหว่างการพัฒนา ให้พิจารณาตั้งค่ากฎสำหรับการเข้าถึงแบบสาธารณะ
คลิกเสร็จสิ้น
ตอนนี้คุณจะดูที่เก็บข้อมูลในคอนโซล Firebase ได้แล้ว (ไปที่แท็บฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล > ไฟล์)
รูปแบบชื่อที่เก็บข้อมูลเริ่มต้นคือ PROJECT_ID.firebasestorage.app
ตั้งค่าการเข้าถึงแบบสาธารณะ
Cloud Storage for Firebase มีภาษาของกฎที่ประกาศซึ่งช่วยให้คุณกำหนดวิธีจัดโครงสร้างข้อมูล วิธีจัดทำดัชนีข้อมูล และเวลาที่สามารถอ่านและเขียนข้อมูลได้ โดยค่าเริ่มต้น สิทธิ์การอ่านและเขียนใน Cloud Storage จะถูกจำกัดเพื่อให้มีเพียงผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์เท่านั้นที่สามารถอ่านหรือเขียนข้อมูลได้ หากต้องการเริ่มต้นใช้งานโดยไม่ต้องตั้งค่า Authentication คุณสามารถกำหนดค่ากฎสำหรับการเข้าถึงแบบสาธารณะได้
การดำเนินการนี้จะทำให้ทุกคนเข้าถึง Cloud Storage ได้ แม้แต่ผู้ที่ไม่ได้ใช้แอปของคุณ ดังนั้นโปรดจำกัด Cloud Storage อีกครั้งเมื่อตั้งค่าการตรวจสอบสิทธิ์
เพิ่ม SDK ของ Cloud Storage ลงในแอป
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ<project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารี Cloud Storage สำหรับ Android เราขอแนะนำให้ใช้
Firebase Android BoM
เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารี
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.1")) // Add the dependency for the Cloud Storage library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-storage") }
การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ
(ทางเลือก) เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM
หากเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันของไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการในแอป เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันไลบรารี ซึ่งจะช่วยให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Add the dependency for the Cloud Storage library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-storage:23.0.0") }
ตั้งค่า Cloud Storage ในแอป
ตรวจสอบว่าไฟล์การกำหนดค่า Firebase (
google-services.json) ในฐานของโค้ดของแอปได้รับการอัปเดตด้วยชื่อบักเก็ต Cloud Storage เริ่มต้นแล้วใช้ไฟล์การกำหนดค่าที่ดาวน์โหลดนี้เพื่อแทนที่ไฟล์
google-services.jsonที่มีอยู่ในไดเรกทอรีโมดูล (ระดับแอป) ของแอปตรวจสอบว่าคุณมีเฉพาะไฟล์การกำหนดค่าที่ดาวน์โหลดล่าสุดนี้ในแอป และชื่อไฟล์ไม่มีอักขระเพิ่มเติมต่อท้าย เช่น
(2)
เข้าถึงที่เก็บข้อมูล Cloud Storage โดยสร้างอินสแตนซ์ของ
FirebaseStorageดังนี้Kotlin
storage = Firebase.storage
// Alternatively, explicitly specify the bucket name URL. // val storage = Firebase.storage("gs://BUCKET_NAME")
Java
FirebaseStorage storage = FirebaseStorage.getInstance();
// Alternatively, explicitly specify the bucket name URL. // FirebaseStorage storage = FirebaseStorage.getInstance("gs://BUCKET_NAME");
คุณพร้อมที่จะเริ่มใช้ Cloud Storage แล้ว
ขั้นตอนถัดไป ดูวิธีสร้างข้อมูลอ้างอิงCloud Storage
การตั้งค่าขั้นสูง
กรณีการใช้งานที่ต้องมีการตั้งค่าเพิ่มเติมมีดังนี้
- การใช้ที่เก็บข้อมูล Cloud Storage ในภูมิภาคทางภูมิศาสตร์หลายแห่ง
- ใช้ที่เก็บข้อมูล Cloud Storage รายการในคลาสพื้นที่เก็บข้อมูลที่แตกต่างกัน
- การใช้ที่เก็บข้อมูล Cloud Storage กับผู้ใช้ที่ตรวจสอบสิทธิ์แล้วหลายรายในแอปเดียวกัน
กรณีการใช้งานแรกเหมาะอย่างยิ่งหากคุณมีผู้ใช้อยู่ทั่วโลกและต้องการจัดเก็บข้อมูลของผู้ใช้ไว้ใกล้กับผู้ใช้ เช่น คุณสามารถสร้างที่เก็บข้อมูลในสหรัฐอเมริกา ยุโรป และเอเชียเพื่อจัดเก็บข้อมูลของผู้ใช้ในภูมิภาคเหล่านั้นเพื่อลดเวลาในการตอบสนอง
กรณีการใช้งานที่ 2 จะมีประโยชน์หากคุณมีข้อมูลที่มีรูปแบบการเข้าถึงที่แตกต่างกัน ตัวอย่างเช่น คุณสามารถตั้งค่าที่เก็บข้อมูลแบบหลายภูมิภาคหรือแบบภูมิภาคที่จัดเก็บรูปภาพหรือเนื้อหาอื่นๆ ที่เข้าถึงบ่อย และที่เก็บข้อมูลแบบ Nearline หรือ Coldline ที่จัดเก็บข้อมูลสำรองของผู้ใช้หรือเนื้อหาอื่นๆ ที่เข้าถึงไม่บ่อย
ในกรณีการใช้งานทั้ง 2 กรณีนี้ คุณจะต้องใช้บักเก็ต Cloud Storage หลายรายการ
กรณีการใช้งานที่ 3 จะมีประโยชน์หากคุณกำลังสร้างแอป เช่น Google ไดรฟ์ ซึ่งช่วยให้ผู้ใช้มีบัญชีที่เข้าสู่ระบบหลายบัญชี (เช่น บัญชีส่วนตัวและบัญชีงาน) คุณสามารถใช้แอป Firebase ที่กำหนดเองเพื่อตรวจสอบสิทธิ์บัญชีเพิ่มเติมแต่ละบัญชีได้
ใช้หลายบักเก็ต Cloud Storage
หากต้องการใช้บักเก็ต Cloud Storage อื่นนอกเหนือจากบักเก็ตเริ่มต้นที่อธิบายไว้ก่อนหน้านี้ในคู่มือนี้ หรือใช้บักเก็ต Cloud Storage หลายบักเก็ตในแอปเดียว คุณสามารถสร้างอินสแตนซ์ของ FirebaseStorage ที่อ้างอิงบักเก็ตที่กำหนดเองได้ดังนี้
Kotlin
// Get a non-default Storage bucket val storage = Firebase.storage("gs://my-custom-bucket")
Java
// Get a non-default Storage bucket FirebaseStorage storage = FirebaseStorage.getInstance("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://BUCKET_NAME
คุณดูหมายเลขโปรเจ็กต์ได้ตามที่อธิบายไว้ในข้อมูลเบื้องต้นเกี่ยวกับโปรเจ็กต์ Firebase
การดำเนินการนี้จะไม่ส่งผลต่อบักเก็ตที่สร้างขึ้นใหม่ เนื่องจากบักเก็ตเหล่านั้นมีการตั้งค่าการควบคุมการเข้าถึงเริ่มต้นเพื่ออนุญาต Firebase นี่เป็นมาตรการชั่วคราว และจะดำเนินการโดยอัตโนมัติในอนาคต
ใช้แอป Firebase ที่กำหนดเอง
หากคุณกำลังสร้างแอปที่ซับซ้อนมากขึ้นโดยใช้ FirebaseApp ที่กำหนดเอง คุณสามารถสร้างอินสแตนซ์ของ FirebaseStorage ที่เริ่มต้นด้วยแอปนั้นได้ ดังนี้
Kotlin
// Get the default bucket from a custom FirebaseApp val storage = Firebase.storage(customApp!!) // Get a non-default bucket from a custom FirebaseApp val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")
Java
// Get the default bucket from a custom FirebaseApp FirebaseStorage storage = FirebaseStorage.getInstance(customApp); // Get a non-default bucket from a custom FirebaseApp FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");
ขั้นตอนถัดไป
เตรียมพร้อมเปิดตัวแอปโดยทำดังนี้
เปิดใช้ App Check เพื่อช่วยให้มั่นใจว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงที่เก็บข้อมูลได้
ตั้งค่าการแจ้งเตือนงบประมาณสำหรับโปรเจ็กต์ในคอนโซล Google Cloud
ตรวจสอบแดชบอร์ดการใช้งานและการเรียกเก็บเงินในคอนโซล Firebase เพื่อดูภาพรวมการใช้งานโปรเจ็กต์ในบริการต่างๆ ของ Firebase นอกจากนี้ คุณยังไปที่แดชบอร์ดCloud Storageการใช้งานเพื่อดูข้อมูลการใช้งานโดยละเอียดได้ด้วย