Cloud Storage for Firebase 可讓您上傳及分享圖片、音訊、影片和其他檔案等內容 (包括使用者原創內容),以便在應用程式中建構互動式多媒體內容。您的資料會儲存在 Google Cloud Storage bucket 中,這是艾位元組規模的物件儲存庫解決方案,具備高可用性和全球備援功能。Cloud Storage for Firebase 可讓您直接從行動裝置和網路瀏覽器安全上傳這些檔案,輕鬆處理不穩定的網路。
事前準備
如果您尚未完成 Flutter 應用程式入門指南,請務必先完成。包括:
建立 Firebase 專案。
安裝並初始化 Flutter 適用的 Firebase SDK。
請確認 Firebase 專案採用即付即用 Blaze 定價方案,這是使用 Cloud Storage for Firebase 的必要條件。如果您剛開始使用 Firebase 和 Google Cloud,請確認是否符合 $300 美元免費試用抵免額的資格。
建立預設 Cloud Storage bucket
在 Firebase 控制台中,依序前往「Databases & Storage」(資料庫和儲存空間) > 「Storage」(儲存空間)。
如果專案尚未採用即付即用 Blaze 定價方案,系統會提示您升級專案。
按一下「開始使用」。
選取預設 bucket 的位置。
、US-CENTRAL1 和US-EAST1 中的 bucket 可享有 Google Cloud Storage 的「一律免費」級別。所有其他位置的 bucket 則適用 Google Cloud Storage 定價和用量。US-WEST1如有需要,您之後可以建立多個 bucket,並為每個 bucket 指定位置。
設定預設 bucket 的 Firebase Security Rules。開發期間,建議設定公開存取規則。
按一下「完成」。
現在,您可以在 Firebase 控制台中查看值區 (依序前往「Databases & Storage」(資料庫和儲存空間) >「Storage」(儲存空間) >「Files」(檔案) 分頁標籤)。預設 bucket 名稱格式為 PROJECT_ID.firebasestorage.app
設定公開存取權
Cloud Storage for Firebase 提供宣告式規則語言,可讓您定義資料結構、索引方式,以及讀取和寫入資料的時機。根據預設,Cloud Storage 的讀取和寫入權限會受到限制,只有經過驗證的使用者才能讀取或寫入資料。如要直接開始使用,不設定 Firebase 驗證,可以設定公開存取規則。
這會讓 Cloud Storage 開放給所有人,即使不是應用程式使用者也能存取,因此請務必在設定驗證時再次限制 Cloud Storage。
在應用程式中加入 Cloud Storage SDK
在 Flutter 專案的根目錄中,執行下列指令來安裝外掛程式:
flutter pub add firebase_storage完成後,請重新建構 Flutter 應用程式:
flutter run在 Dart 程式碼中匯入外掛程式:
import 'package:firebase_storage/firebase_storage.dart';
設定 Cloud Storage
從 Flutter 專案目錄執行
flutterfire configure。這會更新應用程式程式碼集中的 Firebase 設定檔 (firebase_options.dart),使其包含預設 Cloud Storage bucket 的名稱。建立
FirebaseStorage的執行個體,存取 Cloud Storage bucket: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 bucket
- 使用不同儲存空間級別的 Cloud Storage bucket
- 在同一個應用程式中,搭配多位已驗證使用者使用 Cloud Storage bucket
如果您的使用者遍布全球,且您想將他們的資料儲存在鄰近位置,則第一個用途最適合您。舉例來說,您可以在美國、歐洲和亞洲建立 bucket,儲存這些區域的使用者資料,藉此縮短延遲時間。
如果資料有不同的存取模式,第二種用途就很有幫助。舉例來說,您可以設定多區域或區域型值區,用來儲存圖片或其他經常存取的內容,並設定 Nearline 或 Coldline 值區,用來儲存使用者備份或其他不常存取的內容。
無論是哪種用途,都建議使用多個 Cloud Storage bucket。
如果您正在建構應用程式 (例如 Google 雲端硬碟),可讓使用者登入多個帳戶 (例如個人帳戶和工作帳戶),則第三個用途會很有幫助。您可以使用自訂 Firebase 應用程式執行個體,驗證每個額外帳戶。
使用多個 Cloud Storage bucket
如要使用上述預設值區以外的 Cloud Storage bucket,或在單一應用程式中使用多個 Cloud Storage bucket,可以建立參照自訂 bucket 的 FirebaseStorage 執行個體:
// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "gs://my-custom-bucket");
使用匯入的值區
將現有的 Cloud Storage bucket 匯入 Firebase 時,您必須使用 Google Cloud SDK 隨附的 gsutil 工具,授予 Firebase 存取這些檔案的權限:
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);
後續步驟
準備推出應用程式:
啟用 App Check,確保只有您的應用程式可以存取儲存空間 bucket。
在 Google Cloud 控制台中,為專案設定預算快訊。
在 Firebase 控制台監控「Usage and billing」(用量與帳單) 資訊主頁,全面掌握專案在多項 Firebase 服務的用量。您也可以前往Cloud Storage 用量資訊主頁,查看更詳細的使用資訊。
查看 Firebase 推出檢查清單。