Firebase 存储 - Cloud Functions 中的“ref 不是函数”错误

问题描述 投票:0回答:1

我正在开发一个 Firebase Cloud Function,它处理 Zoop API 响应,提取 base64 格式的图像,并尝试将其上传到 Firebase Storage。但是,我遇到了 ref 函数 的问题,这导致出现错误,指出 ref 不是函数。我尝试了各种方法,包括更改引用存储的方式,但问题仍然存在。任何有关解决此问题的见解将不胜感激。

const functions = require("firebase-functions");
const cors = require("cors")({ origin: true });
const { getFirestore } = require("firebase-admin/firestore");
const { getStorage, ref, uploadString, getDownloadURL } = require("firebase-admin/storage");

exports.initResponse = functions.https.onRequest((req, res) => {
  cors(req, res, async () => {
    try {
      const db = getFirestore();
      const storage = getStorage();

      // Assuming Zoop response is a JSON object
      const zoopData = req.body;
      const reqId = zoopData.request_id;
      const result = zoopData.result;
      const base64Image = result.best_capture_image;
      console.log(base64Image);

      // Attempting to use ref function
      const storageRef = ref(storage, `best_capture_images/${reqId}.jpg`);
      await uploadString(storageRef, base64Image, "base64", { contentType: "image/jpg" });

      // Get the download URL
      const downloadURL = await getDownloadURL(storageRef);

      console.log("Download URL:", downloadURL);

      // Further processing...

      res.status(200).json({ success: true, downloadURL });
    } catch (error) {
      console.error("Error uploading image to Firebase Storage:", error.message);
      res.status(500).json({ success: false, error: "Error uploading image to Firebase Storage" });
    }
  });
});

附加信息:

Node.js 版本:18 Firebase SDK 版本:^11.8.0

预先感谢您的协助!

我尝试将 Zoop API 响应中的 Base64 图像上传到云功能中的 Firebase 存储。我使用了 uploadString 方法以及从 ref 获取的 storageRef,但遇到了“ref 不是函数”的问题。我期望图像能够成功上传,并且期望检索到有效的下载 URL。然而,实际结果是“ref”步骤出现错误。然后我尝试使用“storage.ref”,随后遇到“storage.ref”不被识别的问题。

node.js firebase google-cloud-functions firebase-storage firebase-admin
1个回答
0
投票

导入 firebase admin sdk 并初始化它

const functions = require("firebase-functions");
const cors = require("cors")({ origin: true });
const admin = require("firebase-admin");

admin.initializeApp();
const db = admin.firestore();
const storage = admin.storage();

exports.initResponse = functions.https.onRequest((req, res) => {
  cors(req, res, async () => {

而不是使用存储桶来引用存储和文件

      const bucket = storage.bucket();
      const file = bucket.file(`best_capture_images/${reqId}.jpg`);
      await file.save(Buffer.from(base64Image, 'base64'), {
        metadata: { contentType: 'image/jpg' },
      });

获取下载地址

 const downloadURL = await file.getSignedUrl({
        action: 'read',
        expires: '01-01-2222'
      });
© www.soinside.com 2019 - 2024. All rights reserved.