码迷,mamicode.com
首页 > 其他好文 > 详细

vue + element ui 实现pdf文件下载和预览

时间:2021-02-22 12:36:39      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:import   comment   cat   文件下载   ||   默认   comm   axios   用途   

【应用场景】

选中表格的一条数据,然后点击下载pdf文件,实现下载功能

技术图片

 

一:pdf文件下载功能

1、后端接口地址,首先在axios.post的请求中把默认的 " responseType:‘json’ " 改为" responseType:‘blob’ 

如果是其他文件格式,参考MIME多用途互联网邮件扩展类型。

/**
 * 导出Pdf文件
 */
export const getImportPdf = (id) => {
  return request({
    url: ‘/api/lh-customs/ExportPdf/downloadHfd?id=‘ + id,
    method: ‘get‘,
    responseType: ‘blob‘
  })
}

并且,后端接口返回的是文件流的形式

技术图片

 

2、按钮方法代码

<el-button type="primary" size="mini" icon="el-icon-download" @click="importPdf">下载PDf文件</el-button>

// 导出pdf功能
importPdf() {
   if (this.selectionList.length === 0 || this.selectionList.length > 1) {
     this.$message.warning("请选择一条数据")
     return
   }
   getImportPdf(this.selectionList[0].id).then(res => {
     // 下载pdf
     //type类型可以设置为文本类型,这里是pdf类型
     this.pdfUrl = window.URL.createObjectURL(new Blob([res.data], { type: `application/pdf` }));
     const fname = ``; // 下载文件的名字
     const link = document.createElement(‘a‘);
     link.href = this.pdfUrl;
     link.setAttribute(‘download‘, fname);
     document.body.appendChild(link);
     link.click();
   })
},

 

二:pdf文件预览

downLoadPdf() {
  if (this.selectionList.length === 0 || this.selectionList.length > 1) {
     this.$message.warning("请选择一条数据")
     return
  }
  getImportPdf(this.selectionList[0].id).then(res => {
   const binaryData = [];
   binaryData.push(res);
     //获取blob链接
     this.pdfUrl = window.URL.createObjectURL(new Blob(binaryData, { type: ‘application/pdf‘ }));
     window.open(this.pdfUrl);
 }) },

 

补充知识:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。

网页链接:https://www.cnblogs.com/yjmBlogs/p/9493726.html

 

vue + element ui 实现pdf文件下载和预览

标签:import   comment   cat   文件下载   ||   默认   comm   axios   用途   

原文地址:https://www.cnblogs.com/liangqilin/p/14425778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!