开始用$.ajax发送post请求到后端下载zip附件,能正常下载,但内容死活打不开,提示损坏。代码如下:
var url = 'http://localhost:8012/api/exportTemplate';
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json',
responseType: "blob",
data: data,
success: function(data) {
let url = window.URL.createObjectURL(new Blob([data], {
type: "application/zip"
}));
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', "outstockreport.zip");
document.body.appendChild(link);
link.click();
}
});
因为$.ajax不支持responseType: "blob",切换下在代码后问题解决:
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.responseType = "blob";
xhr.setRequestHeader("Content-type", "application/json;");
xhr.onload = function() {
if (this.status === 200) {
var blob = this.response;
var r = new FileReader();
r.readAsDataURL(blob);
r.onload = function(e) {
var a = document.createElement('a');
a.download = docNum + "outstockreport.zip";
a.href = e.target.result;
$("body").append(a);
a.click();
$(a).remove();
}
}
};
xhr.send(data);