Javascript-将类型化数组保存为blob,并作为二进制数据读回
Javascript - Save typed array as blob and read back in as binary data
我有一个类型化数组,其中充满了从ArrayBuffer 生成的二进制数据
var myArr = new Uint8Array(myBuffer);
我用向用户展示
var blob = new Blob(myArr, {type: "octet/stream"};
var blobURL = URL.createObjectURL(blob);
并插入链接
"<a href=" + blobUrl + " download=" + filename "/a>"
稍后,我让用户从磁盘中选择文件,并使用文件读取器进行
var reader = new FileReader();
reader.onload = function () {
console.log(reader.result);
};
reader.readAsArrayBuffer(sourceFile);
问题是,似乎无论我做什么,我都会得到文件内容的"字符串"。事实上,当我保存文件时,我可以打开它,而且它很容易被人类读取。I.E.如果我的Uint8Array是{"0" : "51", "1" : "52", "2" : "53" }
我可以在文本编辑器中打开下载的blob,我只看到"515253",我认为这不是应该发生的事情。
我如何为我的文件下载一个格式正确的链接,这样我就可以用正确的值在dget中读回它?
事实证明,问题是我在创建Blob时出现了语法错误。
更正后的代码如下所示:var blob = new Blob([myArr], {type: "octet/stream"});
如果我已经在传递ArrayBuffer参数,我真的不知道为什么。为什么我需要括号符号?看起来多余?
根据Mozilla
https://developer.mozilla.org/en-US/docs/Web/API/Blob#Example_for_creating_a_URL_to_a_typed_array_using_a_blob
var blob = new Blob([typedArray.buffer], {type: 'application/octet-stream'});
const download = function (data)
{
const blob = new Blob(data, { type: "octet/stream"});
const url = window.URL.createObjectURL(blob)
const a = document.createElement('a')
a.setAttribute('href', url)
a.setAttribute('download', app.lastSub+"_"+new Date().toISOString()+'.py');
a.click()
}
const get = async function () {
download(app.psspyList);
}
相关文章:
- 如何处理从条形码扫描仪返回的二进制数据
- 将图像文件存储在猫鼬模式中的二进制数据中,并以html形式显示图像
- 二进制数据的可移植hashCode实现
- Javascript-将类型化数组保存为blob,并作为二进制数据读回
- 获取二进制数据并将其保存为.mp3文件Javascript
- 二进制数据的createObjectUrl失败
- 将数据结构转换为二进制数据
- 将二进制数据发送到服务器
- 将通过 AJAX 上传的二进制数据保存在 PHP 服务器上
- 如何在IE9中读取二进制数据
- 如何将二进制数据映射到javascript中的字符
- Base64解码不适用于二进制数据
- 如何在Firefox中使用xmlhttprequest和二进制数据,例如图像
- 通过HTTP请求将二进制数据上传到AppEngineBlobstore
- 为什么在Web套接字中使用二进制数据
- 在将图像作为原始图像二进制数据(png或jpeg)上传到服务器之前,裁剪或调整图像大小
- 如何在不编码或保存数据的情况下将二进制数据从javascript传递到actionscript(网页到flash)
- 使用牛仔和MessagePack通过websocket发送二进制数据
- 如何在严格模式下将附件下载为二进制数据
- 如何在浏览器中显示单词/ pdf二进制数据