gpt4 book ai didi

javascript - 在 JavaScript 中从 Bytes 下载文件

转载 作者:IT王子 更新时间:2023-10-29 03:09:05 27 4
gpt4 key购买 nike

我想从 AJAX 响应中下载以字节形式出现的文件。

我尝试在 Blob 的帮助下这样做:

var blob=new Blob([resultByte], {type: "application/pdf"});
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myFileName.pdf";
link.click();

它实际上是在下载 pdf 文件,但文件本身已损坏。

我怎样才能做到这一点?

最佳答案

我很久以前就问过这个问题,所以我在某些细节上可能是错误的。

事实证明,Blob 需要数组缓冲区。这就是为什么需要先将 base64 字节转换为数组缓冲区。

这是执行此操作的函数:

function base64ToArrayBuffer(base64) {
var binaryString = window.atob(base64);
var binaryLen = binaryString.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++) {
var ascii = binaryString.charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
}

这是我保存 pdf 文件的函数:

function saveByteArray(reportName, byte) {
var blob = new Blob([byte], {type: "application/pdf"});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
var fileName = reportName;
link.download = fileName;
link.click();
};

下面是如何同时使用这两个函数:

var sampleArr = base64ToArrayBuffer(data);
saveByteArray("Sample Report", sampleArr);

关于javascript - 在 JavaScript 中从 Bytes 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038884/

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