vue项目-pdf预览和下载,后台返回文件流形式
2020-02-05 21:52
4906 查看
背景:正好最近碰到了这种需求,记录下来,方便以后查看。
后端返回的文件流数据如下图所示:
一、pdf的预览
一开始的时候百度了很多方法,有建议用pdfJs插件的,有iframe嵌套实现的,最后发现了一种及其简便的实现方法:
pdfPreview(url){ this.$http({ url: `account/registerOpen/${url}`, method: 'get', responseType: 'arraybuffer', //一定要设置响应类型,否则页面会是空白pdf params: { accountId: id, lang: 'en_US' } }).then(res => { const binaryData = []; binaryData.push(res); //获取blob链接 this.pdfUrl = window.URL.createObjectURL(new Blob(binaryData, { type: 'application/pdf' })); window.open(this.pdfUrl); } }); } }
二、pdf的下载
下载也挺简单的,代码如下:
pdfDownload(url){ const id = sessionStorage.getItem('idPdf').replace(/"/g, ''); this.$http({ url: `account/registerOpen/${url}`, method: 'get', responseType: 'arraybuffer', params: { accountId: id, lang: 'en_US' } }).then(res => { // 下载pdf if (url === 'PerPdf/download' || url === 'PerCrsPdf/download' || url === 'PerWbenContractPdf/download') { //type类型可以设置为文本类型,这里是pdf类型 this.pdfUrl = window.URL.createObjectURL(new Blob([res], { type: `application/pdf` })); const fname = `个人开户资料`; // 下载文件的名字 const link = document.createElement('a'); link.href = this.pdfUrl; link.setAttribute('download', fname); document.body.appendChild(link); link.click(); } }); }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
- vue 两种文档下载方法的实现(后台传递文件流,后台返回文件下载地址)
- vue项目中使用pdf.js预览pdf文件
- vue项目里使用ECharts图表后台返回图表数据
- vue 在线预览、下载word、pdf文件
- 前端文件上传,struts2后台返回json数据,在IE为什么会以文件下载的形式打开。
- android客户端从服务器端下载文件,服务端返回文件流(文件不在项目里)
- 基于VUE利用pdf.js实现文件流形式的pdf显示(转载)
- vue以文件流方式使用pdj.js实现预览pdf文件
- 前端vue项目-关于下载文件pdf/excel(三)
- iOS 下载图片 -当后台返回的数据是文件流而不是图片url
- 微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载
- vue实现在线预览pdf文件和下载(pdf.js)
- vue项目中的pdf预览方案(包含混合开发)开发经验
- vue项目中使用pdf.js,通过解析后台base64格式文件解决跨域问题
- vue项目中文件下载踩坑之路
- 文件流形式下载,服务器不存储问题。
- Vue项目结构预览
- vue学习之一:下载vue-cli项目
- FileNet项目中附件存储形式与上传下载的数据结构