gpt4 book ai didi

javascript - 将 Uint8Array 保存到二进制文件

转载 作者:可可西里 更新时间:2023-11-01 01:42:22 26 4
gpt4 key购买 nike

我正在开发一个可以打开二进制文件并允许对其进行编辑的网络应用程序。

这个过程基本上是 ondrop -> dataTransfer.files[0] -> FileReader -> Uint8Array

本质上,我希望能够将修改后的文件保存回二进制文件。理想情况下,作为具有指定文件名的文件下载。

似乎没有任何标准方法可以做到这一点,这很糟糕,因为到目前为止的一切都得到了很好的支持。

我目前正在使用 String.fromCharCode() 将数组转换为字符串,对其进行 base64 编码,并在超链接中使用数据 uri,如 data:application/octet-stream; base64,..,以及用于指定文件名的 download 属性。

它似乎可行,但它很老套,我认为将原始字节转换为字符串可能会引入编码问题,具体取决于字节值。我不希望数据损坏或破坏字符串。

除此之外,是否有更好/正确的方法将字节数组作为二进制文件提供给用户?

最佳答案

这些是我用来跨浏览器下载文件的实用程序。有趣的是,您实际上可以将链接的 download 属性设置为您希望文件名成为的名称。

仅供引用,二进制的 mimeType 是 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');

关于javascript - 将 Uint8Array 保存到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25354313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com