记录(一):下载文件时无法获取用户信息导致下载文件只显示a标签登录

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值