我正在生成一个文件客户端,我有十六进制的数据,只是想让用户下载生成的文件。
var blob = new Blob([hexData], {type: "application/octet-stream"});
console.log(URL.createObjectURL(blob));
生成的文件是包含ASCII格式的十六进制数据的纯文本文件。如何强制Blob按原样包含二进制数据而不是文本?
答案 0 :(得分:4)
从上面的@Musa解决方案中得出,所以我不能赊道,但是把它作为答案而不是我对他的回答的蹩脚评论更清楚。
<div class="parent">
<div class="less-important">Truncate this text because it is less important</div>
<div class="more-important">The important text</div>
</div>
<div class="parent">
<div class="less-important">No ellipsis</div>
<div class="more-important">Important stuff</div>
</div>
<div class="parent">
<div class="less-important">Less important content</div>
<div class="more-important">Way more important info that will cause ellipsis</div>
</div>
也许这更容易理解?我个人认为它更清楚。
答案 1 :(得分:3)
将数据转换为二进制数组,然后从中创建一个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"});