美文网首页
记录:下载时,返回二进制流和json格式分别处理方式

记录:下载时,返回二进制流和json格式分别处理方式

作者: 一个健康马 | 来源:发表于2022-07-29 15:20 被阅读0次
    getFiles(_path, query) {
        axios({
          method: 'get', // 请求方式
          headers: {
            'Content-Type': 'application/octet-stream',
            'token': store.getters.token
          },
          url: _path, // 请求路径
          params: query,
          responseType: 'blob'
        }).then(res => {
          const data = res.data;
          if (res.data.type == 'application/json') {     // json信息展示
            this.handlerResponseError(data);
          } else {
            // 下载文件流
            const filename = this.getCaption(res.headers['content-disposition']);
            const blob = new Blob([res.data], {
              type: 'application/octet-stream'
            });
            const objectUrl = URL.createObjectURL(blob);
            const link = document.createElement('a');
            link.href = objectUrl;
            link.setAttribute('download', filename);
            document.body.appendChild(link);
            link.click();// 点击
            document.body.removeChild(link); // 下载完成移除元素
            window.URL.revokeObjectURL(URL); // 释放掉blob对象
          }
        }).catch((err) => {
          console.log(err, 'err');
        });
      },
    
      handlerResponseError(data) {
        const _this = this;
        const fileReader = new FileReader();
        fileReader.onload = function() {
          try {
            const jsonData = JSON.parse(fileReader.result); // 说明是普通对象数据,后台转换失败
            console.log('后台返回的信息',jsonData.msg);
           // dosomething……
          } catch (err) { // 解析成对象失败,说明是正常的文件流
            console.log('success...');
          }
        };
        fileReader.readAsText(data);
      },
    

    相关文章

      网友评论

          本文标题:记录:下载时,返回二进制流和json格式分别处理方式

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