后台返回文件流

1.因为是文件流下载,所以在取后台数据的时候,要多传递一个【responseType: ‘blob’】这个参数,是为了最后数据返回时response的data为【blob】文件格式(data: Blob {size: 22528, type: “application/vnd.ms-excel”}),否则返回的数据只有文件流的结构体,不包含【blob】。
下面为封装的获取后台文件流的方式

function downloadPost (config){return new Promise((resolve,reject) => {axios({url: config.url,method: 'post',data: config.data,responseType: 'blob'}).then(res => {resolve(res)}).catch(err=>{reject(err);});});
}

2.将取回来的response直接返回到应用页,通过取到的response去实现文件流转换的制作。我是封装了一个方法,方便多处调用。如果不封装方法的话,直接将实现方法写在返回结果的地方就可以了
下面是调用后台方法的写法

downloadTemplate({responseType: 'arraybuffer'}).then(res=>{// 文件流转换成xls文件this.$utils.fileConversion("白名单导入模板.xls",res);this.$message({type:'success',message:'模板文件已开始下载!'});
})

下面是上面返回结果调用的【fileConversion】的写法

   /*** 字节流转换成文件下载* inputFileName:文件名* data:后台取得数据*/fileConversion(inputFileName,data){let str = data.headers['content-disposition'];// 文件名let fileName = inputFileName;let blob = new Blob([data.data], {type:"application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});if (window.navigator.msSaveOrOpenBlob) {navigator.msSaveBlob(blob);} else {let elink = document.createElement("a");elink.download = fileName;elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click();document.body.removeChild(elink);}},

以上方法就可以实现后台返回文件流的文档转换了。
需要注意的是,我是通过修改传递的文件名用来控制导出的格式,大家可以参考我的方法实现,如果有更好的方法欢迎评论~~
下面配送控制方式:

if(exportType == 1) {fileName = "白名单导出数据.xls"
} else {fileName = "白名单导出数据.csv"
}

通过URL下载文件的话,其实后台请求封装与文件流是一样的,封装的话和文件流也是一样的,传递取回来的response和文件名,我就不一一粘代码了,可以参考上面的方式。(在这里小小备注一下:因为我没有亲测url的方式,所以可能会存在小问题,大家如果试了有什么问题,欢迎评论,我会慢慢修改的~~)
奉上封装方法:

/*** 从URL里下载文件* fileName:文件名* data:后台取得的数据*/// 下载文件downloadFile (fileName,data) {if (!data) { return }let url = window.URL.createObjectURL(new Blob([data]))let link = document.createElement('a')link.style.display = 'none'link.href = url;link.setAttribute('download', fileName)document.body.appendChild(link)link.click()},

感谢阅读~~

vue 两种文档下载方法的实现(后台传递文件流,后台返回文件下载地址)相关推荐

  1. 团队合作开发的两种文档工具

    前言 团队中,需要从需求分析开始确定,一直到项目的开发完成,中间要经历各种事情,需要各种任务来维持,一直到合作开发完成,所以需要一个团队协作查看的任务工具.那么这里推荐的有两种,trello,和tea ...

  2. 将vue文档下载到本地预览

    将vue文档下载到本地预览 由于vue文档在服务器在国外,因此访问速度较慢,为了方便文档查看,可以将文档下载到本地预览 步骤 到vue的GitHub仓库下载文档源码 下载node.js和git安装到本 ...

  3. Vue+ElementUi 项目中 将页面内容转为 Word文档下载

    Vue+ElementUi 项目中 将页面内容转为 Word文档下载 需要提前做好的现成模板(魔板个页面基本上相同的内容)-模板内有变量,替换成页面对应的数据 HTML页面: 转换的word 以下是正 ...

  4. 纯前端vue利用docxtemplater实现生成word文档下载 word模板,勾选框的默认勾选。。

    首先需要下载如下工具: cnpm i docxtemplater pizzip jszip-utils file-saver -S 然后将它们引入: import JSZipUtils from &q ...

  5. Word文档下载(图片,数据表格)

    Java 下载Word文档xwpfTemplate Java 下载Word文档xwpfTemplate 文档下载(图片,数据表格),pom依赖 <dependency><groupI ...

  6. 安卓软件改名器_【安卓软件】文档下载|只能说是最牛下载器之一

    全网文档文库下载 文库下载器 是库文档下载软件,可帮助用户免费下载百度库.协作.帮助库等库资源,可以原始格式下载,非常实用,操作简单,需要时可以下载.还添加了对WIP.Hownet和其他学术网络的支持 ...

  7. 如何计算两个文档的相似度(一)

    下面的内容转自我爱自然语言处理博客,感谢博主,学到很多东西. 原文链接:http://www.52nlp.cn/%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E4%B8%A ...

  8. 比较两个文档的相似程度_您的文档对读者的友好程度如何?

    比较两个文档的相似程度 有成就的技术作家所要做的首要任务是为观众写作. 这个任务听起来很简单,但是当我想到世界各地的人们时,我想知道:他们能阅读我们的文档吗? 可读性已经研究了多年,接下来是对研究成果 ...

  9. java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...

    软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...

  10. 比较两个文档中的文字的区别

    比较两段文字的区别的几种方法: 首先,什么时候才需要这个功能,我想,只有当两段文字非常相似的时候才会使用这个功能.比如我昨天看代码,两段代码非常相似,我看了N久也没发现他们的区别.但是,使用软件就能很 ...

最新文章

  1. java获取注解的属性值_反射+自定义注解,实现获取注解标记的属性
  2. 本蒟蒻对于二分图一些定理的理解
  3. 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称
  4. kotlin集合操作符——总数操作符
  5. MySQL服务的启动和停止
  6. python netsnmp_python net-snmp使用
  7. Flutter 页面滚动吸顶详解(NestedScrollView)
  8. 【4】Kafka集群启动/关闭脚本
  9. Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)
  10. 实施工程师的发展前景
  11. iredmail邮件服务器安装流程
  12. 完美收官!Fortinet Accelerate 2022中国站在北京落幕
  13. MCS51 系列单片机的中央处理器(CPU)
  14. CSDN云IDE怎样克隆代码
  15. 真热闹,华为阿里腾讯加入中文编程争夺,抢风头的却另有其人
  16. ActiveX控件的MFC设计之旅-第12步 .
  17. java与英语词汇_Java英语词汇表
  18. 庄子 “唯至人乃能游于世不避,顺人而不失己。”
  19. Linux新加硬盘挂载
  20. 胡伟立-孤独[影视配乐扒曲]

热门文章

  1. Java集成快递100的订阅服务和根据物流单号查询物流详情的接口
  2. 免费快递查询API接口
  3. 【Adobe Illustrator 教程】3. 认识钢笔工具
  4. ie打开本地html页面慢,win7使用ie浏览器访问网页显示缓慢、卡死的解决方法
  5. pdf批量转换为图片
  6. 自己打羽毛球的若干问题
  7. hb100 微波雷达arduino_【Arduino】108种传感器系列实验(03)-微波雷达感应开关...-Arduino中文社区 - Powered by Discuz!...
  8. 计算机平面设计大专学校排名,平面设计学校排名哪些较好?
  9. IDEA集成docker-maven-plugin配置CA安全证书
  10. 解决svn报错 : The pristine text with checksum 'e006b124faa4ddf60d8773d1855e6bfa56145874' was not fou