Cloud Storage for Firebase 让您可以上传和共享用户生成的内容,例如图像和视频,从而让您可以在应用中构建富媒体内容。您的数据存储在Google Cloud Storage 存储桶中——一种具有高可用性和全局冗余的 EB 级对象存储解决方案。 Cloud Storage for Firebase 让您可以直接从移动设备和 Web 浏览器安全地上传这些文件,轻松处理不稳定的网络。
先决条件
如果您还没有安装 Firebase JS SDK 并初始化 Firebase 。
创建默认 Cloud Storage 存储桶
从Firebase 控制台的导航窗格中,选择Storage ,然后单击Get started 。
查看有关使用安全规则保护您的 Cloud Storage 数据的消息。在开发过程中,考虑设置公共访问规则。
为您的默认 Cloud Storage 存储桶选择一个位置。
此位置设置是您项目的默认 Google Cloud Platform (GCP) 资源位置。请注意,此位置将用于项目中需要位置设置的 GCP 服务,特别是您的Cloud Firestore数据库和App Engine应用程序(如果您使用 Cloud Scheduler,则需要)。
如果您无法选择位置,则您的项目已经具有默认的 GCP 资源位置。它是在项目创建期间或在设置需要位置设置的其他服务时设置的。
单击完成。
设置公共访问
Cloud Storage for Firebase 提供了一种声明性规则语言,允许您定义数据的结构、索引方式以及何时可以读取和写入数据。默认情况下,对 Cloud Storage 的读写访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。要在不设置身份验证的情况下开始,您可以配置公共访问规则。
这确实使云存储对任何人开放,甚至是不使用您的应用程序的人,因此请务必在设置身份验证时再次限制您的云存储。
将您的存储桶 URL 添加到您的应用
如果尚未包含,您需要将 Cloud Storage 存储桶 URL 添加到Firebase 应用的配置对象中。
转到Firebase 控制台中的存储仪表板。
单击“文件”选项卡,然后查看文件查看器的标题。
将 URL 复制到剪贴板。它通常采用
project-id .appspot.com
的形式。在您应用中的
firebaseConfig
对象中,添加带有存储桶 URL 的storageBucket
属性:
Web version 9
import { initializeApp } from "firebase/app"; import { getStorage } from "firebase/storage"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... storageBucket: '' }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Storage and get a reference to the service const storage = getStorage(app);
Web version 8
import firebase from "firebase/app"; import "firebase/storage"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... storageBucket: '[your-storage-bucket-url]' }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Storage and get a reference to the service const storage = firebase.storage();
您可以开始使用 Cloud Storage 了!
下一步?了解如何创建 Cloud Storage 参考。
高级设置
有一些用例需要额外的设置:
如果您的用户遍布世界各地,并且希望将他们的数据存储在他们附近,那么第一个用例是完美的。例如,您可以在美国、欧洲和亚洲创建存储桶,为这些地区的用户存储数据以减少延迟。
如果您的数据具有不同的访问模式,则第二个用例会很有帮助。例如:您可以设置一个多区域或区域存储桶来存储图片或其他经常访问的内容,以及一个近线或冷线存储桶来存储用户备份或其他不经常访问的内容。
在这两种用例中的任何一种情况下,您都需要使用多个 Cloud Storage 存储桶。
如果您正在构建一个应用程序(如 Google Drive),第三个用例很有用,它允许用户拥有多个登录帐户(例如,个人帐户和工作帐户)。您可以使用自定义 Firebase 应用程序实例来验证每个额外的帐户。
使用多个 Cloud Storage 存储桶
如果您想使用上面提供的默认存储桶以外的 Cloud Storage 存储桶,或者在单个应用程序中使用多个 Cloud Storage 存储桶,您可以创建一个引用您的自定义存储桶的firebase.storage
实例:
Web version 9
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");
Web version 8
// Get a non-default Storage bucket var storage = firebase.app().storage("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
实例:
Web version 9
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");
Web version 8
// 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");
下一步
准备启动您的应用程序:
启用App Check以帮助确保只有您的应用可以访问您的存储桶。
在 Google Cloud Console 中为您的项目设置预算提醒。
监控 Firebase 控制台中的使用情况和计费仪表板,以全面了解您的项目在多个 Firebase 服务中的使用情况。您还可以访问Cloud Storage Usage仪表板以获取更详细的使用信息。