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

时间:2014-09-11 10:57:48

标签: javascript blob

我有一个纯粹的Uint8Array我想保存到blob中 我可以创建任何类型的blolb(' text / plain',application / octet-stream等)..

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:808464433 1:809054514 2:808464432 3:808464432 ????????????

如果我使用:

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

我有: [49,48,48,48,50,49,57,48,48,...]这是1 0 0 0 2 1 9 0的ascii代码.... (我的值的字符串表示....)

我做得不好? 也许blob并没有真正保存为纯二进制数据? fullbuffer是二进制字符串对象吗? 我要使用特定类型吗? 我是否以不同的方式阅读缓冲区? 必须在循环中创建一个Uint8Array来关联full_buffer单个数据吗?

1 个答案:

答案 0 :(得分:0)

<强>解决

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

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

所以修复(不容易发现因为自己正在看一个又一个时间数组,bufferarray,typedarrays ....而你感到困惑)是使用[]括号来动态创建一个元素数组/ s

所以而不是:

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

使用

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

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