全书目录

第四十七篇:Firebase 完全指南 —— 云端托管商圈宇宙

第八章:Storage —— 云仓库,不是把文件塞进数据库

1 分钟 440 字 第 875 / 962 个阅读单元

业务里总会遇到这些东西:

  • 用户头像
  • 商品图片
  • 聊天附件
  • PDF
  • 音视频
  • 各种用户上传内容

这些显然不适合塞进 Firestore 这种账本。

这时候就轮到 Cloud Storage for Firebase

你可以把它理解成:

商圈统一云仓库。

它的主路径是:

  • 文件进对象存储
  • 通过路径引用
  • 用安全规则控权限
  • 可和 Auth 联动
  • 可和 Functions 联动做后处理

一个 Web 上传示例:

ts
import { initializeApp } from "firebase/app";
import {
  getStorage,
  ref,
  uploadBytes,
  getDownloadURL
} from "firebase/storage";

const app = initializeApp(firebaseConfig);
const storage = getStorage(app);

export async function uploadAvatar(file: File, userId: string) {
  const avatarRef = ref(storage, `avatars/${userId}/${file.name}`);

  await uploadBytes(avatarRef, file);

  const url = await getDownloadURL(avatarRef);
  return url;
}

典型业务流是:

text
用户上传头像
   ↓
文件进云仓库
   ↓
返回可访问地址
   ↓
把这个地址写进 Firestore 用户资料

这就像:

货物先进中央仓库,账本里只记仓位和取货凭证。

#Storage 为什么适合和 Firebase 搭配

因为它天然跟这些东西打通:

  • Auth 身份
  • Security Rules
  • Cloud Functions 触发
  • Hosting / 前端引用
  • Google Cloud Storage 能力

例如很常见的后续处理:

  • 图片上传后自动压缩
  • 视频上传后自动转码
  • 文件上传后做审核
  • 上传完成后回写 Firestore

这就是“物业 + 仓库 + 后厨”的联动。