项目场景:
后端返回乱码文件流,前端Ajax请求下载
问题描述:
使用ajax请求加参数
xhrFields: {
responseType: "blob ",
}
报错,还没找到原因。。。
最后使用原生请求,但是原生请求只能发送字符串,需要向后端传对象
解决方案:
用FormData把对象参数处理成字符串
let data={id:1,name:2}
let formData=new FormData();
for(let k in data){
formData.append(k,data[k]);
}
const xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.responseType = "blob";
xhr.onload = () => {
var blob = new Blob([xhr.response], {type: 'application/vnd.ms-excel'});
const blobUrl = URL.createObjectURL(blob);
var elink = document.createElement('a');
elink.style.display = 'none';
elink.href = blobUrl;
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
}
xhr.send(formData);