gpt4 book ai didi

javascript - 使用 Javascript 下载二进制文件

转载 作者:行者123 更新时间:2023-12-03 03:05:00 25 4
gpt4 key购买 nike

我想使用 Javascript 下载二进制文件。

我有一个返回二进制数据的 REST 服务,我想知道是否可以显示二进制文件,无论文件扩展名如何。

这是我当前的代码:

var xhr = new XMLHttpRequest;
xhr.open("GET", requestUrl);
xhr.addEventListener("load", function () {
var ret = [];
var len = this.responseText.length;
var byte;
for (var i = 0; i < len; i++) {
byte = (this.responseText.charCodeAt(i) & 0xFF) >>> 0;
ret.push(String.fromCharCode(byte));
}
var data = ret.join('');
data = "data:application/pdf;base64," + btoa(data);

window.open(data, '_blank', 'resizable, width=1020,height=600');
}, false);

xhr.setRequestHeader("Authorization", "Bearer " + client.accessToken);
xhr.overrideMimeType("octet-stream; charset=x-user-defined;");
xhr.send(null);

谢谢!

最佳答案

查看关于 XMLHttpRequest 的 MDN 文章.

如果将 XMLHttpRequest 的响应设置为 ArrayBuffer您可以执行以下操作:

var xhr = new XMLHttpRequest();
xhr.open("GET", requestUrl);
xhr.responseType = "arraybuffer";

xhr.onload = function () {
if (this.status === 200) {
var blob = new Blob([xhr.response], {type: "application/pdf"});
var objectUrl = URL.createObjectURL(blob);
window.open(objectUrl);
}
};
xhr.send();

选项 2:
您可以使用 Blob作为 XMLHttpRequest 的响应。然后也许将其保存在文件系统中( FileSystem API )

它可能看起来像:

var xhr = new XMLHttpRequest();
xhr.open("GET", requestUrl);
xhr.responseType = "blob";

xhr.onload = function () {
onDownloaded(this);
};
xhr.send();

选项 3:
如果您只想下载并“显示”图像,您可以轻松地执行此操作,如下所示:

var img = new Image();

// add the onload event before setting the src
img.onload = function() {
onImageDownloaded(img);
}

// start the download by setting the src property
img.src = requestUrl

关于javascript - 使用 Javascript 下载二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696516/

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