将Uint8Array保存为二进制文件
Saving a Uint8Array to a binary file
我正在开发一个打开二进制文件并允许编辑它们的web应用程序。
这个过程基本上是ondrop -> dataTransfer.files[0] -> FileReader -> Uint8Array
本质上,我希望能够将修改后的文件保存回二进制文件。最理想的方式是下载带有指定文件名的文件。
似乎没有任何标准的方法来做到这一点,这很糟糕,因为到目前为止,所有的东西都得到了很好的支持。
我目前正在将数组转换为使用String.fromCharCode()
的字符串,base64编码,并在data:application/octet-stream;base64,..
等超链接中使用数据uri,以及download
属性来指定文件名。
它似乎工作,但它是相当黑客,我认为将原始字节转换为字符串可能会引入编码问题,这取决于字节值。我不希望数据损坏或破坏字符串。
除此之外,是否有更好/适当的方法来获取字节数组作为二进制文件给用户?
这些是我用来跨浏览器下载文件的实用程序。这样做的妙处是,您可以将链接的download
属性设置为您想要的文件名。
二进制文件的mime类型是application/octet-stream
var downloadBlob, downloadURL;
downloadBlob = function(data, fileName, mimeType) {
var blob, url;
blob = new Blob([data], {
type: mimeType
});
url = window.URL.createObjectURL(blob);
downloadURL(url, fileName);
setTimeout(function() {
return window.URL.revokeObjectURL(url);
}, 1000);
};
downloadURL = function(data, fileName) {
var a;
a = document.createElement('a');
a.href = data;
a.download = fileName;
document.body.appendChild(a);
a.style = 'display: none';
a.click();
a.remove();
};
用法:
downloadBlob(myBinaryBlob, 'some-file.bin', 'application/octet-stream');
(较短)ES6版的顶级答案:
const downloadURL = (data, fileName) => {
const a = document.createElement('a')
a.href = data
a.download = fileName
document.body.appendChild(a)
a.style.display = 'none'
a.click()
a.remove()
}
const downloadBlob = (data, fileName, mimeType) => {
const blob = new Blob([data], {
type: mimeType
})
const url = window.URL.createObjectURL(blob)
downloadURL(url, fileName)
setTimeout(() => window.URL.revokeObjectURL(url), 1000)
}
相关文章:
- 如何将PDF作为二进制文件传递到window.open()
- 如何在Windows中将Javascript文件编译成二进制文件
- 在Internet Explorer中从二进制文件打开PDF
- 如何使用JavaScript粘贴原始二进制文件而不出现“无效字符”错误
- 使用JavaScript从二进制文件中读取字节,而不使用jQuery
- AngularJS可以在没有任何服务器端技术的情况下将文件保存/写入服务器
- 将从浏览器创建的文件保存到磁盘 - 不能在 Firefox 上使用新的 File()
- 使用 node.js 从 Google 云端硬盘读取二进制文件
- 使用 JQuery 读取二进制文件的浏览器之间的不同行为
- 如何获取 CasperJS 请求的图像的二进制文件
- 使用 Node.js 执行命令行二进制文件
- 将用JavaScript生成的二进制文件保存到iPad
- 希望将客户端生成的二进制文件保存到客户端机器
- Javascript使用ANSI编码将二进制数据保存到文件中
- 如何在WSH (JScript)中创建二进制文件并将其保存到本地文件系统?
- 将Uint8Array保存为二进制文件
- 用IE、ADODB从base64文本数据中保存二进制文件.流式传输到硬盘
- 使用jszip提取文件并使用npapi-file-io保存到本地磁盘.二进制文件保存非常慢
- 如何在客户端保存二进制文件在jquery .post
- 如何将文本保存到文件并再次读取,但在javascript中保存为二进制文件