我想伪造一个回应。我有png
图像的base64字符串数据。现在,我想做出回应,但是它不起作用。
我的代码:
const data = "data:image/png;base64,iVBORw0KGgoAAAA...";
const res = new Response(data, {
status: 200,
statusText: "OK",
headers: {
"Content-Type": "image/png",
"Content-Length": data.length
},
});
我做了一些研究,似乎base64
不能仅仅传递给响应机构。它需要转换为缓冲区或类似的东西。
可以像这样在NodeJS中完成 Buffer.from(data, 'base64')
但是我的代码仅在浏览器中。
有什么办法可以实现呢?
base64是一个编码字符串,要获取实际图像,您需要使用将其转换为二进制数据atob
。这是一个例子:
const b64String = data.split(',')[1];
var byteString = atob(b64String);
var arrayBuffer = new ArrayBuffer(byteString.length);
var intArray = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteString.length; i++) {
intArray[i] = byteString.charCodeAt(i);
}
var imageBlob = new Blob([intArray], {type: 'image/png'});
const res = new Response(imageBlob, {
status: 200,
statusText: "OK",
headers: {
"Content-Type": "image/png",
"Content-Length": imageBlob.size
},
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句