Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

開始使用 Cloud Storage on Web

Cloud Storage for Firebase 可讓您上傳和共享用戶生成的內容,例如圖像和視頻,這樣您就可以將富媒體內容構建到您的應用中。您的數據存儲在Google Cloud Storage 存儲分區中 — 一種具有高可用性和全局冗餘的 EB 級對象存儲解決方案。 Cloud Storage for Firebase 可讓您直接從移動設備和網絡瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網絡。

先決條件

在您的應用中添加和配置 Firebase SDK

創建默認 Cloud Storage 存儲分區

  1. Firebase 控制台的導航窗格中,選擇Storage ,然後單擊Get started

  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 的讀寫訪問受到限制,因此只有經過身份驗證的用戶才能讀寫數據。要開始而不設置身份驗證,您可以配置公共訪問規則

這確實使 Cloud Storage 向任何人開放,即使是不使用您的應用程序的人,因此在設置身份驗證時請務必再次限制您的 Cloud Storage。

將您的存儲桶 URL 添加到您的應用程序

如果尚未包含,您需要將您的 Cloud Storage 存儲桶 URL 添加到Firebase 應用的配置對象

  1. 轉到Firebase 控制台中的存儲儀表板。

  2. 單擊“文件”選項卡,然後查看文件查看器的標題。

  3. 將 URL 複製到剪貼板。它通常採用project-id .appspot.com的形式。

  4. 為了您的firebaseConfig在你的應用程序對象,添加storageBucket屬性與你鬥網址:

    網頁版 v8

    // Set the configuration for your app
    // TODO: Replace with your app's config object
    var firebaseConfig = {
      apiKey: '<your-api-key>',
      authDomain: '<your-auth-domain>',
      databaseURL: '<your-database-url>',
      storageBucket: '<your-storage-bucket-url>'
    };
    firebase.initializeApp(firebaseConfig);
    
    // Get a reference to the storage service, which is used to create references in your storage bucket
    var storage = firebase.storage();

    網頁版 v9

    import { initializeApp } from "firebase/app";
    import { getStorage } from "firebase/storage";
    
    // Set the configuration for your app
    // TODO: Replace with your app's config object
    const firebaseConfig = {
      apiKey: '<your-api-key>',
      authDomain: '<your-auth-domain>',
      databaseURL: '<your-database-url>',
      storageBucket: '<your-storage-bucket-url>'
    };
    const firebaseApp = initializeApp(firebaseConfig);
    
    // Get a reference to the storage service, which is used to create references in your storage bucket
    const storage = getStorage(firebaseApp);

您已準備好開始使用 Cloud Storage!

下一步?了解如何創建 Cloud Storage 參考

高級設置

有一些用例需要額外設置:

  • 多個地理區域使用 Cloud Storage 存儲分區
  • 不同的存儲類別中使用 Cloud Storage 存儲分區
  • 將 Cloud Storage 存儲分區與同一應用中的多個經過身份驗證的用戶一起使用

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

如果您的數據具有不同的訪問模式,則第二個用例很有幫助。例如:您可以設置一個多區域或區域的存儲區,用於存儲圖片或其他經常訪問的內容,以及一個近線或冷線存儲區,用於存儲用戶備份或其他不常訪問的內容。

在上述任一用例中,您都需要使用多個 Cloud Storage 存儲分區

如果您正在構建一個應用程序,例如 Google Drive,那麼第三個用例很有用,它允許用戶擁有多個登錄帳戶(例如,個人帳戶和工作帳戶)。您可以使用自定義 Firebase 應用實例對每個額外的帳戶進行身份驗證。

使用多個 Cloud Storage 存儲分區

如果您想使用上面提供的默認存儲分區以外的其他 Cloud Storage 存儲分區,或者在單個應用中使用多個 Cloud Storage 存儲分區,您可以創建一個引用您的自定義存儲分區的firebase.storage實例:

網頁版 v8

// Get a non-default Storage bucket
var storage = firebase.app().storage("gs://my-custom-bucket");

網頁版 v9

import { getApp } from "firebase/app";
import { getStorage } from "firebase/storage";

// Get a non-default Storage bucket
const firebaseApp = getApp();
const storage = getStorage(firebaseApp, "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 應用

如果您正在使用自定義firebase.app.App構建更複雜的應用程序,您可以創建一個使用該應用程序初始化的firebase.storage.Storage實例:

網頁版 v8

// Get the default bucket from a custom firebase.app.App
var storage = customApp.storage();

// Get a non-default bucket from a custom firebase.app.App
var storage = customApp.storage("gs://my-custom-bucket");

網頁版 v9

import { getStorage } from "firebase/storage";

// Get the default bucket from a custom firebase.app.App
const storage1 = getStorage(customApp);

// Get a non-default bucket from a custom firebase.app.App
const storage2 = getStorage(customApp, "gs://my-custom-bucket");

下一步