前端(vue)文件流下载

这篇具有很好参考价值的文章主要介绍了前端(vue)文件流下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端(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.toymoban.com/news/detail-652764.html

到了这里,关于前端(vue)文件流下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

    👨‍💻个人主页 :@程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏 :vue框架开发   Vue.js 是一款流行的 JavaScript 前端框架,它以其简单、灵活和高效的特性,成为了构建现代化 Web 应用程序的首选工具

    2024年04月27日
    浏览(56)
  • vue 前端自动打开文件地址进行下载

    最近在做异步导出的功能,导出的过程中前端另外启动一个查询导出进度的线程接口。如果导出完成后,把生成的文件上传到服务器,返回给前端一个文件的下载地址; 前端自动打开这个地址进行跳转下载。 有两种方式 这种方式有一个问题,会被浏览器自动拦截弹出的窗口

    2024年02月04日
    浏览(42)
  • windows.open 在vue前端实现文件下载(自定义下载文件名)

    1. 将要下载的文件放在前端项目的 assets 文件夹内  我要下载的文件为  src/assrts/xxx/xxx模板.csv  2. 在页面创建下载按钮    3. 导入该文件 4. 在build文件夹下的webpack.base.conf.js 文件中,添加csv(或者其他)解析类型 5. 编写下载方法 参考自:vue 实现本地excel文件下载功能_璐哈

    2024年02月05日
    浏览(105)
  • vue前端下载阿里oss超大文件的问题

    最近在开发一个大文件压缩下载需求,由于附件都是从阿里oss上下载,且一次下载多个文件,然后进行打包压缩,前期使用了axios+jszip+file-saver 来进行处理,但是当文件超过3个G的时候会出现out of memory和RangeError: Array buffer allocation failed错误。 下面贴出代码:   使用常用的 a

    2024年02月11日
    浏览(47)
  • 【Java 实现文件下载】vue前端+java后端实现文件下载详解(附源码)

    【 写在前面 】前端时间总结了一下有关java文件上传的功能,也给不少读者带来一些帮助,因此今天继续完善文件下载这套体系,希望能给屏幕前的您带来实质性的帮助,其实文件下载最怕的就是中文乱码的现象,当然这个我单独写了一篇文章解释,这里不做详谈。 涉及知识

    2024年02月09日
    浏览(56)
  • #vue3 实现前端下载excel文件模板功能

    一、需求: 前端无需通过后端接口,即可实现模板下载功能。 通过构造一个 JSON 对象,使用前端常用的 第三方库 xlsx ,可以直接将该 JSON 对象转换成 Excel 文件,让用户下载模板 二、效果: 三、源码如下:

    2024年01月19日
    浏览(70)
  • vue下载pdf文件纯前端实现,不跳页面实现

    一、引入download.js npm install downloadjs 地址:https://www.npmjs.com/package/downloadjs 注意:使用download.js时下载的文件内容为该文件的url(url和filename参数有中文的话下载后的文件会损坏打不开,需要修改源码) 二、复制一份下载好的downloadjs 文件 , 修改后的源码

    2024年02月12日
    浏览(60)
  • vue 纯前端预览pdf,纯前端实现pdf加水印下载文件也带水印,防止pdf下载

      原理:主要是利用pdfh5这个插件来完成的   使用方法:   1.页面需要有一个容器例子:div id=\\\"demo\\\"/div   2.下载pdfh5插件 npm install pdfh5   (注意:webpack5之后不会下载polyfill 需要手动下载 所以引入pdfh5的时候会报错)   解决方案:下载 node-polyfill-webpack-plugin npm install node-polyfill-

    2024年04月15日
    浏览(68)
  • vue纯前端实现下载excel文件,本地和测试环境都可正常下载

    vue2纯前端实现下载excel文件,本地和测试环境都可正常下载。 1、把后端给的excel文件放到本地项目文件夹中,位置如图所示: 2、在需要展示下载功能的页面中引入该excel文件,如图所示: 3、使用a链接,href绑定引入的excel文件路径,并添加download属性,download属性值就是下载

    2024年02月13日
    浏览(56)
  • vue+xlsx实现前端模版下载、导入和导出excel文件

    产品需求:后端不想写下载,导入和导出的接口,让我们前端自己实现。 这里我们就可以用xlsx插件来实现,我们不多说了,先放一下实现的图片,下面我们分别把模版下载、导入和导出的代码放上来,想用的话,直接复制粘贴即可! 模版下载图片 导出图片: 好了,下面我

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包