【问题标题】:Javascript How to create and use blob with pure binary dataJavascript 如何使用纯二进制数据创建和使用 blob
【发布时间】:2014-11-05 07:09:46
【问题描述】:

我有一个纯 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 是二进制字符串对象吗? 我必须使用特定类型吗? 我是否以不同的方式读取缓冲区? 必须在循环中创建一个关联 full_buffer 个人数据的 Uint8Array 吗?

【问题讨论】:

  • 如果您相信您的解决方案将来对其他人有帮助,您应该回答自己的问题(而不是使用解决方案编辑您的问题)。不过,您可能需要等待一段时间才能自行回答。
  • 请把你的答案从你的问题中移到答案中。我会投赞成票!

标签: javascript blob


【解决方案1】:

已解决

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

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

所以解决方法(不容易发现,因为自己看到一个又一个时间数组,bufferarray,typedarrays....并且你感到困惑)是使用[]括号动态创建一个元素数组.

所以不是:

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

使用

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

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

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2011-08-24
    • 1970-01-01
    • 2021-02-12
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多