gpt4 book ai didi

javascript - 是否可以通过 FileSaver saveAs 下载$.post

转载 作者:行者123 更新时间:2023-11-28 18:55:56 24 4
gpt4 key购买 nike

我正在测试 FileSaver saveAs 功能。这是我通过发布请求获取报告数据的代码

$.ajax({
type: "POST",
url: '/rest/report/test',
contentType: 'application/json',
async: false,
data: JSON.stringify({"date": "11.11.2015"}),
success: function (response) {
console.log(response);
saveAs(response,"test.xlsx");
}
});

失败并出现错误:未捕获类型错误:无法在“URL”上执行“createObjectURL”:未找到与提供的签名匹配的函数。

但是我可以看到结果console.log(response); - 它显示文件内容。是否可以使我的代码下载文件?

最佳答案

saveAs 尝试对您的文本执行 createObjectURL,但失败。

原因是 saveAs 不接受纯文本作为参数。它只接受Blob对象。

文本文件

如果您的服务器返回文本,您可以使用 new Blob() 构造函数从文本创建 Blob
这是工作示例:

document.getElementById('download').onclick = function() {
var text = "Hello world!";

var blob = new Blob([text], {
type: "text/plain; encoding=UTF-8"
});
saveAs(blob, "result.txt");
};
<script src="http://eligrey.com/demos/FileSaver.js/FileSaver.js"></script>
<a href="#" id="download">Download</a>

二进制文件

只要您有二进制文件,就可以使用 native XMLHttpRequest 并使用 responseType = blob

var xhr = new XMLHttpRequest();
xhr.open('POST', '/rest/report/test/', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
if (this.status == 200) {
var blob = this.response;
saveAs(blob, 'download.xlsx');
}
};

xhr.send();

关于javascript - 是否可以通过 FileSaver saveAs 下载$.post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647432/

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