亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

FirebaseError:Firebase存儲:字符串與格式“base64”不匹配:找到無效字符

FirebaseError:Firebase存儲:字符串與格式“base64”不匹配:找到無效字符

慕標5832272 2023-07-20 17:08:04
我正在嘗試將 Base64 圖像上傳到我的前基存儲。我尋找了很長時間如何做到這一點,但找不到它,甚至在堆棧溢出流上也找不到。當我嘗試上傳圖像時,出現此錯誤,提示字符串不是 base64 格式。我在幾個將 Base64 轉換為圖像的網站上粘貼了相同的字符串,并且它工作得很好,所以該字符串沒問題。我不知道我錯過了什么,我不知道下一步該做什么......我將非常感謝任何類型的幫助。這是我的代碼:const storageRef = firebase.default.storage().ref().child("users")    storageRef.putString(base64String, 'base64', { contentType: "image/jpg" }).then(snap => {        console.log("yay");    }).catch(err => {        console.log("not good");    })我的 base64 字符串不是以“data:image/jpg;base64”開頭,它看起來像這樣:“/9j/4...poi//Z”
查看完整描述

1 回答

?
慕的地6264312

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 可能位于快照的元數據中。

查看完整回答
反對 回復 2023-07-20
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號