import request from 'superagent'
handleDownload(){
//请求携带的参数
const obj={
system_id:window.localStorage.getItem('system_id'),
reportinfo_ids:this.state.selectedRowsItems
}
request
.get('/laboratory/reportPrint/batchDownloadReport') //get请求方式
.set('Content-Type', 'multipart/form-data') //设置请求头
.set('accesstoken', window.localStorage.getItem('accesstoken')) //设置token
.query(obj) //参数
.responseType('blob') //bold二进制
.then(function(response){
const blob=new Blob([response.body], {type: 'application/octet-stream'}); //指定类型
const fileName = response.headers.filename //下载文件名
if(response.statusCode === 200){
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
const aLink = document.createElement('a');
document.body.appendChild(aLink);
aLink.style.display='none';
const objectUrl = window.URL.createObjectURL(blob);
aLink.href = objectUrl;
aLink.download = fileName;
aLink.click();
document.body.removeChild(aLink);
}
}else{
message.warn('下载失败,请重新登录')
}})
.catch(err => {
console.log('err',err) });
}
react 关于文件流下载的兼容
response.blob().then(blob => {
const aLink = document.createElement('a');
document.body.appendChild(aLink);
aLink.style.display='none';
const objectUrl = window.URL.createObjectURL(blob);
aLink.href = objectUrl;
aLink.download = fileName;
aLink.click();
document.body.removeChild(aLink); //这句是针对火狐的,没有这句话,火狐就根本导不出文件来,火狐对a.download似乎有点个人意见,但Chrome可以,折腾了好久。
});