Javascript如何创建和使用带有纯二进制数据的blob

Javascript How to create and use blob with pure binary data

本文关键字:二进制 数据 blob 何创建 创建 Javascript      更新时间:2023-09-26

我有一个纯Uint8Array要保存到blob中我可以创建任何类型的blolb("text/plain"、application/octet流等)。。

var a_blob = new Blob(Uint8Array,{type: whatever});

稍后测试结果我有:

this.read_blob = function (blob)  {
var reader = new FileReader();        
reader.onloadend =  function (evt) 
{ var full_buffer = evt.target.result;    }
reader.readAsArrayBuffer(blob);    
}

我已经存储了1 219 2 0个值(使用Uint32Array存储了4个值),并且我已经检查了所有正确的值。

现在,我有:(我想检查blob值)

var data  = new Uint32Array (full_buffer,0,4);

我已经:0:808464431:8090545142:808464323:80846432????????????

如果我使用:

var data  = new Uint8Array (full_buffer,0,4);

我有:[49,48,48,58,50,49,57,48,…]它们是1 0 0 0 2 1 9 0…的ascii码。。。。(我的值的字符串表示……)

我做错了什么?也许blob并没有真正保存为纯二进制数据?fullbuffer是二进制字符串对象吗?我必须使用特定类型吗?我必须用不同的方式读取缓冲区吗?必须在循环中创建一个关联完整缓冲区单个数据的Uint8Array?

已解决

正如MDN所解释的:要创建blob,必须使用

blob=新blob(零件,类型);part=要放入新Blob对象的数据对象数组。

因此,解决方法(不容易发现,因为你看到的是一个又一个时间数组、bufferarray、typedarrays……你会感到困惑)是使用[]括号来创建一个元素/s的数组。

所以不是:

var a_blob = new Blob(Uint8Array,{type: whatever});

使用

var a_blob = new Blob([Uint8Array],{type: whatever});

相信我,经过大量的网络搜索,你可以看到帖子,在那里你可以看到带括号和不带括号的blob创建