美文网首页vue axios
axios文件下载上传进度监听

axios文件下载上传进度监听

作者: 王二麻子88 | 来源:发表于2020-10-29 09:35 被阅读0次

axios文件下载上传进度监听

exportFun(){
  let _that = this
  // 1. 创建Axios实例
  const instance = this.axios.create({
    onDownloadProgress: function(ProgressEvent) {
      const load = ProgressEvent.loaded;
      const total = ProgressEvent.total;
      const progress = (load / total) * 100;
      console.log(progress);
      bar.style.width=(progress) + "%";
      $("#total").html( Math.floor(progress) + "%");

      // 进度完成之后
      if(progress == 100){
        _that.$emit('exportDataFun',this.needData)
        _that.isDownLoad = false
      }
    } 
  });

  let ajaxUrl,fileName;
  if(this.isCanClick){
    let _that =this;
    _that.isCanClick = false;

    // 调用Axios实例
    instance({
      url: ajaxUrl,
      method: "post",
      data: this.needData,
      responseType: "blob" //  application/octet-stream
    }).then(res => {
      const data = res.data;
      let r = new FileReader();
      r.onload = function () {
        try {
          let resData = JSON.parse(this.result)
          console.log(resData)
          if (resData && resData['code'] && resData['code'] != '1000') {
            _that.$Message.info(resData.msg);
            _that.isDownLoad = false
          }
        } catch (err) {
          // 兼容ie11
          if (window.navigator.msSaveOrOpenBlob) {
            try {
              const blobObject = new Blob([data])
              window.navigator.msSaveOrOpenBlob(blobObject, fileName)
            } catch (e) {
              console.log(e)
            }
            return
          }
          this.download(data, fileName)
          alert('导出成功')
        }
      }
      r.readAsText(data) // FileReader的API
    }).catch(e => {
      let msg = "网络异常";
      alert(msg);
    })
  };

相关文章

网友评论

    本文标题:axios文件下载上传进度监听

    本文链接:https://www.haomeiwen.com/subject/tbatmktx.html