跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 前端(vue)文件流下载

前端(vue)文件流下载

时间:2024-04-05 20:50:29 来源:网络cs 作者:付梓 栏目:卖家故事 阅读:

标签: 文件 
阅读本书更多章节>>>>

前端(vue)文件流下载

1.首先进行封装在utils中,直接复制即可

export function dataToFile (params) {  let type = params.type;  let fileName = params.fileName;  let data = params.data;  // 兼容 IE  if (window.navigator && window.navigator.msSaveOrOpenBlob) {    window.navigator.msSaveOrOpenBlob(new Blob([data]), fileName);  } else {    // 非IE 浏览器    const url = window.URL.createObjectURL(new Blob([data], { type }));    const link = document.createElement('a');    link.href = url;    link.setAttribute('download', `${fileName}`);    document.body.appendChild(link);    link.click();    window.URL.revokeObjectURL(url); // 释放内存  }}

2.接口,其中可以看到给接口添加了responseType,用来指定后台返回响应数据的类型,其中’arraybuffer‘返回的是包含二进制数据的JavaScriptArraybuffer。

 getAttachmentByNameList: (fileName, filePath) => axios.get('getAttachmentByName?fileName=' + fileName + '&filePath=' + filePath, {    responseType: 'arraybuffer'  })

3.一般下载都得首先去触发点击,点击后下载。点击时候去拿到下载文件的下载文件名,下载数据流,下载的类型,请求content-type 要设置为 application/octet-stream(二进制流数据),这样我们的的参数就全齐了

 getAttachmentByName (row) {      let fileName = row.fullName;      let filePath = row.fullPath;      API.getAttachmentByNameList(fileName,fullPath).then((res) => {        let params = {          data: res.data,          fileName: fileName,          type: 'application/octet-stream;'        };        dataToFile(params);      });    },
4.拓展 ,在http请求中,一般接口相应得是200,数据类型还都是json格式,这个数据类型返回的是’ArrayBuffer’,这时候需要去判断数据类型,从而去根据类型不去抛出错误 ,不去提示。

这里用到了对象原型链判断方法。不推荐使用 typeof 和 instanceof 去判断数据类型。如果数据类型是‘ArrayBuffer’,那么直接返回数据即可,不去抛出错误即可。

axios.interceptors.response.use(  res => {    let json = res.data;    if (Object.prototype.toString.call(json) === '[object ArrayBuffer]') {      return res;    }  //判断是否是ArrayBuffer数据类型     if (json && json.status !== '200' && json.status !== '10004') {      APP.$message({        message: json.err,        type: 'error'      });    }    return res;  },  error => {    APP.$message({      message: '请求异常',      type: 'error'    });    return Promise.reject(error);  });

————————————————

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-04-05/154597.html,文章来源:网络cs,作者:付梓,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论