Cloud Storage for Firebase 可讓您上傳及分享使用者原創內容,例如圖片和影片,在應用程式中建構豐富的媒體內容。您的資料會儲存在 Google Cloud Storage 值區中,這項解決方案可提供 EB 級物件儲存空間,且具備高可用性和全球備援功能。透過 Cloud Storage for Firebase,您可以直接從行動裝置和網頁瀏覽器安全地上傳這些檔案,輕鬆處理網路不穩定的情況。
事前準備
如果尚未完成,請務必先參閱 Flutter 應用程式入門指南。包括:
建立 Firebase 專案。
安裝並初始化 Flutter 適用的 Firebase SDK。
確認 Firebase 專案採用即付即用 Blaze 定價方案。如果您剛開始使用 Firebase 和 Google Cloud,請確認是否符合 $300 美元抵免額的資格。
建立預設 Cloud Storage bucket
在 Firebase 控制台的導覽窗格中,選取「儲存空間」。
如果專案尚未採用即付即用 Blaze 定價方案,系統會提示您升級專案。
按一下「開始使用」。
選取預設值區的位置。
、US-CENTRAL1
和US-EAST1
中的值區可享有 Google Cloud Storage 的「一律免費」方案。其他地區的 Bucket 則遵循Google Cloud Storage價格和用量。US-WEST1
日後可以視需要建立多個值區,每個值區都有自己的位置。
為預設 bucket 設定 Firebase Security Rules。開發期間,請考慮設定公開存取規則。
按一下「完成」。
您現在可以在 Firebase 控制台的Cloud Storage「Files」(檔案) 分頁中查看 bucket。預設值區名稱格式為 PROJECT_ID.firebasestorage.app
設定公開存取權
Firebase 專用的 Cloud Storage 提供宣告式規則語言,可讓您定義資料的結構、索引方式,以及資料的讀取和寫入時間。根據預設,系統會限制 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 值區的名稱。建立
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 值區
- 在不同儲存空間類別中使用 Cloud Storage 值區
- 在同一個應用程式中,搭配使用 Cloud Storage 值區與多位已通過驗證的使用者
如果您有遍布全球的使用者,並希望將資料儲存在靠近他們的位置,第一個用途就非常適合。舉例來說,您可以在美國、歐洲和亞洲建立值區,儲存這些地區使用者的資料,以減少延遲。
如果您有存取模式不同的資料,第二個用途就很有幫助。舉例來說,您可以設定多區域或區域型值區,儲存圖片或其他經常存取的內容;並設定 Nearline 或 Coldline 值區,儲存使用者備份或其他不常存取的內容。
在上述任一用途中,您都會想使用多個 Cloud Storage 值區。
如果您要建構的應用程式 (例如 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 值區匯入 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 專案簡介。
這不會影響新建立的 bucket,因為這些 bucket 的預設存取權控制項已設為允許 Firebase。這項措施只是暫時解決方案,日後將會自動執行。
使用自訂 Firebase 應用程式
如果您要使用自訂 FirebaseApp
建構更複雜的應用程式,可以建立以該應用程式初始化的 FirebaseStorage
執行個體:
// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);
後續步驟
- 準備發布應用程式:
- 啟用 App Check,確保只有您的應用程式可以存取儲存空間值區。
- 在 Google Cloud 控制台中為專案設定預算快訊。
- 在 Firebase 控制台中監控「用量與帳單」資訊主頁,全面掌握專案在多項 Firebase 服務中的用量。如要查看更詳細的使用資訊,請前往 Cloud Storage Usage 資訊主頁。
- 詳閱 Firebase 發布檢查清單。