关于文件流下载兼容火狐问题~


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可以,折腾了好久。
});


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM