1 回答
TA贡献1817条经验 获得超6个赞
我不确定firebase npm 包是否打算与 Node.js 一起使用,我认为根据我在网上阅读的内容,“firebase admin”可能会更好。很多人在与 Base64 进行转换时遇到问题,他们编写了自己的“atob:”和“btoa”polyfill 函数,以便该包可以与 Node.js 一起使用。此外,此 firebase 包需要“XMLHttpRequest”,即特定于浏览器,但如果你愿意,你可以安装更多的polyfills - 正如我在下面所做的 - 虽然看起来很丑。在浏览器中使用“firebase”npm 包而不是node.js 可能更容易。
我可以让它工作的唯一方法是将 base64 字符串转换为 blob,然后上传它,如下所示:
const firebase = require("firebase/app");
require("firebase/storage");
global.XMLHttpRequest = require("xhr2"); //polyfill
let app = firebase.initializeApp({
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: "",
});
let base64String = `iVBORw0KGgoAAAANS......`
const storageRef = firebase.storage().ref();
const imageRef = storageRef.child("123.jpeg");
//convert base64 to buffer / blob
const blob = Buffer.from(base64String, "base64");
imageRef
.put(blob, {
contentType: "image/jpeg",
})
.then(function (snapshot) {
//console.log(snapshot);
console.log("Uploaded blob");
});
上传的 blob 在 firebase 存储中正确显示为图像,URL 可能位于快照的元数据中。
添加回答
举报