/**
* 文件流下载导出
* @param {Object} url 请求地址
* @param {Object} method GET / POST请求
* @param {Object} formData 请求参数
* @param {Object} fileName 自定义文件名称
* @param {Object} contentType
*/
function handleBlobFile(url,method,formData,fileName,contentType) {
let params = '';
if(typeof formData === 'string') {
params = formData;
}else {
for(let i in formData) {
params += i+'='+formData[i]+'&';
}
params = params.substring(0,params.length - 1);
}
method == 'get' ? url = url+'?'+params : url;
let xhr = new XMLHttpRequest();
xhr.open(method,url, true);
xhr.responseType = "blob";
xhr.setRequestHeader('accessToken', accessToken);
if(contentType) {
xhr.setRequestHeader('Content-type',contentType);
}else {
xhr.setRequestHeader('Content-Type', 'application/x-www-form- urlencoded');
}
xhr.onload = function() {
if (this.status == 200) {
var blob = this.response;
if(blob.type == "text/html"){
return false;
}
// 文件名称设置
var _fileName = fileName;
if(window.navigator.msSaveOrOpenBlob){ // IE浏览器下
navigator.msSaveBlob(blob, _fileName);
} else {
var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.download = _fileName;
link.click();
window.URL.revokeObjectURL(link.href);
}
}else{
alert('文件下载失败!');
}
}
// 发送ajax请求
method == 'get' ? xhr.send() : xhr.send(params);
}