Cloud Storage for Firebase 可让您上传和共享用户生成的内容,例如图片和视频,从而让您可以将富媒体内容构建到您的应用中。您的数据存储在Google Cloud Storage 存储桶中——一种具有高可用性和全局冗余的 EB 级对象存储解决方案。 Cloud Storage for Firebase 让您可以直接从移动设备和网络浏览器安全地上传这些文件,轻松处理不稳定的网络。
先决条件
如果您尚未安装并初始化 Flutter 的 Firebase SDK 。
创建默认 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 的读写访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。要在不设置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 存储分区的第一步是创建一个FirebaseStorage
实例:
final storage = FirebaseStorage.instance;
您已准备好开始使用 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 使用Google Cloud SDK中包含的gsutil
工具访问这些文件的权限:
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);
下一步
- 准备启动您的应用程序:
- 启用应用检查以帮助确保只有您的应用可以访问您的存储桶。
- 在 Google Cloud Console 中为您的项目设置预算提醒。
- 监控 Firebase 控制台中的使用情况和计费信息中心,以全面了解您的项目在多个 Firebase 服务中的使用情况。您还可以访问云存储使用仪表板以获取更详细的使用信息。
- 查看Firebase 启动清单。