SCRIPT5: 拒绝访问。Excel文件在IE下导不出来

本文介绍了一种解决Internet Explorer浏览器下文件导出问题的方法。通过判断浏览器类型并使用不同的技术实现,确保了在IE和其他现代浏览器中都能成功下载Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件在IE下导不出来
在这里插入图片描述原来是由于在IE中不支持手动调用click()方法,所以在下载Excel文件的时候增加判断:

if (navigator.msSaveOrOpenBlob) {//允许用户在客户端上保存文件,IE
 	 //IE浏览器
     navigator.msSaveOrOpenBlob(blobData,fileName);//blobData为下载文件流,fileName为下载文件名
 } else {
     //其他浏览器
     let url = window.URL.createObjectURL(blobData);
     console.log('url',url);
     let link = document.createElement('a');
     link.style.display = 'none';
     link.href = url;
     link.setAttribute('download', fileName);
     document.body.appendChild(link);
     link.click();//IE下不支持该方法
     document.body.removeChild(link);
 }

完整Excel文件下载方法如下:

handleDownload(){
    let fileName='222';
    //fileName=encodeURIComponent(fileName);
    console.log(fileName);
    //导出
    if(this.ID){
      this.toDownload(this.uploadUrl,this.ID,fileName+'.xlsx')
    }else{
        this.$message.error('没有数据,无法导出!');
    }
},
toDownload(url, data, fileName) {
    return new Promise((resolve, reject) => {
        axios({
            method: "get",
            url: url,//请求后端接口url
            params:{ChlinicalID:data},
            responseType: 'blob'
        })
        .then(res => {
            let reader = new FileReader();
            let data = res.data;
            console.log(res);
            reader.onload = e => {
                if (e.target.result.indexOf('Result') != -1 && JSON.parse(e.target.result).Result == false) {
                    // 进行错误处理
                } else {
                    if (!fileName) {
                        let contentDisposition = res.headers['content-disposition'];
                        if (contentDisposition) {
                            fileName = window.decodeURI(res.headers['content-disposition'].split('=')[2].split("''")[1], "UTF-8");
                        }
                    }
                    this.executeDownload(data, fileName);
                }
            };
            reader.readAsText(data);
            resolve(res.data);
        })
    });
},
 //  模拟点击a 标签进行下载
executeDownload(data, fileName) {
  if (!data) {
         return
     }
     var blobData=new Blob([data]);
     if (navigator.msSaveOrOpenBlob) {//允许用户在客户端上保存文件,IE
         //IE浏览器
         navigator.msSaveOrOpenBlob(blobData,fileName);
     } else {
         //其他浏览器
         let url = window.URL.createObjectURL(blobData);
         console.log('url',url);
         let link = document.createElement('a');
         link.style.display = 'none';
         link.href = url;
         link.setAttribute('download', fileName);
         document.body.appendChild(link);
         link.click();//IE下不支持该方法
         document.body.removeChild(link);
     }
 },
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值