vue下载文件

<el-button type="primary"
                         size="small"
                         @click="download">下载导入模板</el-button>
import { readFileDownload } from './addNewEnRoude/model'
//下载模板
    download() {
      this.$http(
        {
          url: this.$http.adornUrl('/fuel/order/rail/download'),
          method: 'get',
          params: {},
          responseType: 'blob',
        },
        { headers: 'application/x-download' }
      ).then((data) => {
        let blob = new Blob([data.data], {
          type: 'application/vnd.ms-excel',
        })
        console.log('blob', blob)
        const excelTitle = '模板.xlsx'
        readFileDownload(blob, excelTitle)
      })
    },

以下为model.js中内容

export function readFileDownload(data, msg) {
  var res = data;
  if (
    res.type === "application/json" ||
    res.type === "application/json;charset=UTF-8"
  ) {
    // 失败的时候,注意ie兼容问题

    let fileReader = new FileReader();
    fileReader.onload = function(event) {
      let jsonData = JSON.parse(this.result); // this.result是根据event,读取文件后打印的
      console.log(jsonData, "...............");
      if (jsonData.data === null && jsonData.code === 1) {
        Message({
          message: jsonData.msg || "Error",
          type: "error",
          duration: 5 * 1000
        });
      }
    };
    fileReader.readAsText(res);
  }
  if (
    res.type === "application/octet-stream" ||
    res.type === "application/vnd.ms-excel" ||
    res.type === "application/vnd.ms-excel;charset=UTF-8"
  ) {
    console.log("success..."); // 成功,注意ie兼容问题

    const blob = new Blob([res], {
      type: "application/vnd.ms-excel;charset=utf-8"
    });

    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
      window.navigator.msSaveOrOpenBlob(blob, msg);
    } else {
      console.log(blob);
      const url = window.URL.createObjectURL(blob);
      console.log(url);
      const aLink = document.createElement("a");
      aLink.style.display = "none";
      aLink.href = url;
      aLink.setAttribute("download", msg);
      document.body.appendChild(aLink);
      aLink.click();
      document.body.removeChild(aLink);
      window.URL.revokeObjectURL(url);
    }
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值