[英]Create binary blob in JS
我正在生成一个文件客户端,我有十六进制的数据,只是想让用户下载生成的文件。
var blob = new Blob([hexData], {type: "application/octet-stream"});
console.log(URL.createObjectURL(blob));
生成的文件是包含ASCII格式的十六进制数据的纯文本文件。 如何强制Blob按原样包含二进制数据而不是文本?
将数据转换为二进制数组,然后从中创建一个blob。
var byteArray = new Uint8Array(hexdata.length/2);
for (var x = 0; x < byteArray.length; x++){
byteArray[x] = parseInt(hexdata.substr(x*2,2), 16);
}
var blob = new Blob([byteArray], {type: "application/octet-stream"});
源于上面@ Musa的解决方案,所以我不能赊道,但是把它作为答案而不是我对他的回答的蹩脚评论更清楚。
var byteArray = new Uint8Array(hexdata.match(/.{2}/g)
.map(e => parseInt(e, 16)));
var blob = new Blob([byteArray], {type: "application/octet-stream"});
也许这更容易理解? 我个人认为它更清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.