我正在开发一个 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”不被识别的问题。
导入 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'
});