Flutter 上的雲端儲存入門

Cloud Storage for Firebase 可讓您上傳和分享用戶生成的內容,例如圖像和視頻,從而允許您在應用程式中建立富媒體內容。您的資料儲存在Google Cloud Storage 儲存桶中,這是一個具有高可用性和全域冗餘的 EB 級物件儲存解決方案。 Cloud Storage for Firebase 可讓您直接從行動裝置和 Web 瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網路。

先決條件

如果您尚未安裝並初始化適用於 Flutter 的 Firebase SDK,請執行此操作。

建立預設 Cloud Storage 儲存分區

  1. Firebase 控制台的導覽窗格中,選擇「儲存」 ,然後按一下「開始」

  2. 查看有關使用安全規則保護 Cloud Storage 資料的訊息。在開發過程中,請考慮設定公共存取規則

  3. 選擇預設 Cloud Storage 儲存分區的位置

    • 此位置設定是您專案的預設 Google Cloud Platform (GCP) 資源位置。請注意,此位置將用於專案中需要位置設定的 GCP 服務,特別是Cloud Firestore資料庫和App Engine應用程式(如果您使用 Cloud Scheduler,則需要)。

    • 如果您無法選擇位置,則您的專案已有預設 GCP 資源位置。它是在專案建立期間或設定另一個需要位置設定的服務時設定的。

    如果您使用 Blaze 計劃,則可以建立多個儲存桶,每個儲存桶都有自己的位置

  4. 按一下“完成”

設定公共訪問

Cloud Storage for Firebase 提供了一種宣告式規則語言,可讓您定義資料的結構方式、索引方式以及資料的讀取和寫入時間。預設情況下,對 Cloud Storage 的讀寫存取受到限制,因此只有經過身份驗證的使用者才能讀取或寫入資料。若要在不設定Firebase 驗證的情況下開始使用,您可以設定公共存取規則

這確實使雲端儲存向任何人開放,甚至是不使用您的應用程式的人,因此請務必在設定身份驗證時再次限制您的雲端儲存。

將 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 儲存桶的第一步是建立FirebaseStorage的實例:

final storage = FirebaseStorage.instance;

您已準備好開始使用雲端儲存!

首先,我們來學習如何建立 Cloud Storage 參考

進階設定

有一些用例需要額外的設定:

  • 多個地理區域使用 Cloud Storage 儲存桶
  • 不同儲存類別中使用 Cloud Storage 儲存桶
  • 在同一應用程式中對多個經過驗證的使用者使用 Cloud Storage 儲存分區

如果您的用戶遍布世界各地,並且希望將他們的資料儲存在他們附近,那麼第一個用例是完美的。例如,您可以在美國、歐洲和亞洲建立儲存桶來儲存這些地區用戶的數據,以減少延遲。

如果您的資料具有不同的存取模式,第二個用例會很有幫助。例如:您可以設定一個多區域或區域儲存桶來儲存圖片或其他經常存取的內容,以及一個近線或冷線儲存桶來儲存使用者備份或其他不經常存取的內容。

在這兩種用例中,您都需要使用多個 Cloud Storage 儲存桶

如果您正在建立應用程式(例如 Google Drive),第三個用例非常有用,它允許使用者擁有多個登入帳戶(例如,個人帳戶和工作帳戶)。您可以使用自訂 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);

下一步