我遇到了一個奇怪的錯誤,當我將 base64 字串轉換為影像緩沖區 ( Buffer.from(image, "base64")) 并回傳到 base64 ( .toString("base64")) 時,生成的 base64 字串缺少其格式(dataimage/pngbase64而不是data:image/png;base64)并且g==在結尾處丟失。這會導致影像“損壞”并且當我將其放入<img />前端時無法呈現。我正在使用的當前解決方法如下:
image.toString("base64").replace("dataimage/pngbase64", "data:image/png;base64,") "g=="
但這遠非最佳解決方案,我不想使用這種解決方法。
這是我緩沖影像(imagebase64)并將其存盤在資料庫中的地方
t.field("createModel", {
type: $name,
args: { input: nonNull(arg({ type: createModelInput.name })) },
resolve: async (_, args) => {
const { image, name, manufacturerId, identifiers } = args.input;
console.log(image) // correct base64 image from frontend
const buffedImage = Buffer.from(image, "base64");
console.log(buffedImage.toString("base64")) // not the same as image above: missing formatting & g== at the end
return await prisma.model.create({
data: {
image: buffedImage,
name,
identifiers,
manufacturer: {
connect: {
id: manufacturerId,
},
},
},
});
},
});
請告訴我需要任何進一步的資訊。
uj5u.com熱心網友回復:
字串的 Base64 部分直到,;之后才開始。該data:部分是一個方案中,image/png部分為內容型別和所述base64,部分是一個指標,什么如下它是Base64編碼文本。因此,當您嘗試將整個字串用作 Base64 時,您要求轉換非 Base64 資料。
您必須先洗掉該前綴,因為它不是 Base64 資料的一部分。它只是data:URI的一部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/332678.html
標籤:javascript 节点.js 打字稿 base64 tobase64string
