如何从xhr请求制作浏览器下载文件

时间:2015-09-17 06:21:05

标签: javascript xmlhttprequest

我正在向服务器发送xhr请求以下载文件。我将授权令牌包含在请求中,因此我无法在不使用xhr的情况下下载文件。当收到服务器的响应时,我应采取哪些步骤使浏览器下载文件?服务器应包含哪些标头?

1 个答案:

答案 0 :(得分:5)

这是一段适合我的代码。我正在使用它进行测试,所以它不是我猜的最干净的方式。但它可以显示一幅画面。

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
    var downloadUrl = URL.createObjectURL(xhttp.response);
    var a = document.createElement("a");
    document.body.appendChild(a);
    a.style = "display: none";
    a.href = downloadUrl;
    a.download = "";
    a.click();
}
};
xhttp.open("GET", fileUrl, true);
xhttp.responseType = "blob";
xhttp.setRequestHeader('Authorization', token);
xhttp.send();

这件作品并不重要,在我的情况下我只需要它:

  

xhttp.setRequestHeader('Authorization',token);

此链接也很有用:Sending and Receiving Binary Data