1. 问题:用户在客户端下载文件时无法获取用户信息,导致下载文件打开后只显示<a href="#">用户登录</a>
2. 解决方案:
2.1 第一步:在src文件夹下创建utils文件夹,创建downLoadFile.js
//vue项目 src >>> utils >>> downLoadFile.js
export function downLoadFile(url, filename) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function (e) {
if (this.status == 200) {
var blob = this.response;
var a = document.createElement('a');
var url = URL.createObjectURL(blob);
a.href = url;
a.download = filename;
a.click();
}
};
xhr.send();
}
2.2 第二步:在需要用到的地方引入上述文件
// 需要的文件下 xxx.vue
<script>
import {downLoadFile} from '@/utils/downLoadFile';
export default {
name: 'xxx',
exportData(id){
let url = config.host+'/api/export/question?question_id='+id+'&survey_id='+this.$route.query._id
let filename = this.title
//判断是否在客户端打开,如果是走downLoadFile(),反之,则直接下载
if(navigator.userAgent.toLocaleLowerCase().indexOf('客户端名字') > -1) {
downLoadFile(url,filename)
}else {
window.open(url);
}
}
}
</script>