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

如何修改代码将上传图片存入Firebase Storage的course-cover文件夹?

修改Firebase Storage上传路径至指定文件夹

要将图片存储到Firebase Storage的course-cover文件夹,只需调整存储引用的路径参数即可,以下是修改后的完整代码:

async function storeCoverCourse(coverCourse) {
  return new Promise((resolve, reject) => {
    const storage = getStorage();
    const filename = `${coverCourse.name}-${uuidv4()}`;
    // 关键修改:在文件名前添加文件夹路径
    const storageRef = ref(storage, `course-cover/${filename}`);
    const uploadTask = uploadBytesResumable(storageRef, coverCourse);
    uploadTask.on(
      "state_changed",
      (snapshot) => {
        // 监听上传状态变化:进度、暂停、继续
        const progress =
          (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
        console.log("上传进度:" + progress + "%");
        switch (snapshot.state) {
          case "paused":
            console.log("上传已暂停");
            break;
          case "running":
            console.log("上传中");
            break;
        }
      },
      (error) => {
        // 处理上传失败
        reject(error);
      },
      () => {
        // 上传完成后获取下载链接
        getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => {
          resolve(downloadURL);
        });
      }
    );
  });
}

const imgUrls = await Promise.all(
  [...cover].map((coverCourse) => storeCoverCourse(coverCourse))
).catch((error) => {
  toast.error("图片上传失败");
  return;
});

const formDataCopy = {
  ...formData,
  imgUrls,
  timestamp: serverTimestamp(),
};
delete formDataCopy.cover;
await addDoc(collection(db, "courses"), formDataCopy);

修改说明

核心改动是创建存储引用的代码:

  • 原代码:const storageRef = ref(storage, filename);
  • 修改后:const storageRef = ref(storage, course-cover/${filename});

通过在文件名前拼接course-cover/,Firebase Storage会自动创建该文件夹(如果不存在),并将文件存储到这个目录下,而不是根路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:05:15