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

标签 javascript blob

我有一个纯 Uint8Array 我想保存到一个 blob 中
我可以使用任何类型(“文本/纯文本”、应用程序/八位字节流等)创建 blob ..

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 ....
(我的值(value)观的字符串表示......)

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

最佳答案

已解决

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 创建

关于Javascript 如何使用纯二进制数据创建和使用 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785682/

相关文章:

javascript - 在 JavaScript 中第 n 次出现正则表达式时分割字符串

mysql - 获取存储过程的 OUT BLOB 类型参数作为 TStream

PHP/MySQL - 显示来自 blob 的图像

javascript - 如何使用 JSX 在本地运行 SystemJS/React 演示?

javascript - 是否可以在JMeter中执行document.forms[0].submit()?

javascript - 使用 express.js 和 node.js 运行我的示例应用程序

javascript - 为 Google Assistant 执行命令 - Node js

node.js - azure : set blob CORS properties using NodeJS

来自对象内容的哈希作为对象 ID : fast alternatives for SHA256

sql - 如何在不使用 xp_cmdshell 的情况下将 BLOB varbinary(max) 列导出到 CSV 或 excel?