You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用如何打通Firestore、Backblaze B2与Cloudflare实现资源存储

实现方案按四个阶段操作即可:

1. 先完成Backblaze B2与Cloudflare CDN的预配置

  • 在Backblaze B2中创建专属存储桶,关闭默认公网访问权限,配置自定义域名解析到Cloudflare节点,Cloudflare侧开启完全SSL模式,同时在B2中添加CORS规则放行你应用的域名请求,避免跨域报错。
  • 生成仅对应该存储桶的上传、删除权限的B2应用密钥,密钥仅保存在服务端,禁止泄露到客户端。

2. Flutter端内容上传流程实现

  • 用户选择好要发布的图片/视频后,先通过Firebase Auth获取当前用户的身份令牌,提交到后端(优先用Firebase Cloud Functions,无需单独搭服务)做身份校验,校验通过后后端用预存的B2密钥生成临时上传签名返回给客户端。
  • Flutter端拿到签名后直接上传媒体文件到B2,文件路径建议按/user/{用户uid}/{时间戳}-{随机字符串}.文件后缀格式命名,避免重名覆盖。
  • 上传成功后将返回的文件路径拼接上你的Cloudflare加速域名,生成最终的资源访问链接。

3. Firestore数据关联存储

  • 在Firestore中新建posts集合,单条帖子文档至少包含以下字段:
    • uid:发布用户的唯一ID
    • content:帖子文字内容
    • media_urls:数组类型,存储所有对应Cloudflare加速后的资源链接
    • create_time:帖子发布时间
    • 其余点赞、评论数等业务字段按需添加
  • 拿到所有资源链接后,将完整帖子数据写入posts集合,同步配置Firestore权限规则:仅登录用户可发布帖子,用户仅可删除自己发布的内容,所有公开帖子支持所有登录用户读取,避免数据被恶意篡改。

4. 内容读取流程

  • 首页加载帖子时直接从Firestore查询posts集合的内容,拿到的media_urls就是已经完成CDN加速的资源链接,直接传入Flutter的图片、视频组件加载即可,Cloudflare会自动处理静态资源缓存,无需额外开发缓存逻辑。
  • 若后续需要删除用户发布的内容,先调用服务端接口删除B2内对应文件,再删除Firestore中对应的帖子文档即可。

内容的提问来源于stack exchange,提问作者Mahirul Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:39:03