JavaScript 文件流转 blob对象
var paramData = {'params': '参数'};
var xhr = new XMLHttpRequest();
var url = 'https://ip:port';
// 例如: https://10.103.20.11/dynamicModel/exportModel
xhr.open('POST', url, true);
// 设置请求头参数,可以添加token值
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
// 设置响应体返回类型,这里需要把返回的文件流转换成 blob 类型
xhr.responseType = 'blob';
xhr.onload = function (e) {
if (this.status == 200) {
// 这里从 响应头里面取出 文件名称,根据实际情况操作
var name = xhr.getResponseHeader('Content-disposition');
name = decodeURIComponent(name);
// 这里对文件名进行操作,是根据实际情况操作的
var fileName = name.substring(20, name.length);
// 返回的文件流,转换成blob对象
var blob = new Blob([xhr.response]);
// 转换成blob类型的url
var blobUrl = URL.createObjectURL(blob);
// 模拟 a 标签进行下载
var eLink = document.createElement('a');
// 设置 a 标签的展示方式,默认 display:none
eLink.style.display = 'none';
// 设置 a 标签的 url
eLink.href = blobUrl;
// 设置 下载文件的文件名称
eLink.download = fileName;
document.body.appendChild(eLink);
eLink.click();
document.body.removeChild(eLink);
}
};
// 此处 () 是项目中需要,可根据实际情况进行转换
xhr.send(JSON.stringify(paramData));