目录

一、前端请求方式

二、请求方法

三、后端响应方式


一、前端请求方式

解析文件流形式返回的数据,判断是否可供下载

//下载PDF
downloadAgreement() {//加载loading样式uni.showLoading({title: "正在请求数据"});//pdf文件名let pdfName = this.dataName + '.pdf';//请求方法pdfDownload(this.dataId).then(res => {//取消loading样式加载uni.hideLoading();//转换blob数据类型let blob = new Blob([res.data]);//创建读取文件FileReaderlet reader = new FileReader();reader.readAsText(blob, "utf-8");reader.onload = () => {try{//这里返回的数据是JSON格式//此处对fileReader读出的结果进行JSON解析//会出现错误,需要进行捕获let res = JSON.parse(reader.result);console.log(res);//弹出提示uni.showModal({title:'系统提示',content:'文件不存在',//响应消息提示showCancel:false//不显示取消按钮});}catch(err){//捕获异常 无法解析JSON格式 这里返回的数据是文件流 可供下载console.log("文件可下载",res.data);//以'a'标签的形式自点击下载let downloadElement = document.createElement("a");let href = window.URL.createObjectURL(blob); //创建下载的链接downloadElement.href = href;downloadElement.download = pdfName; //下载后文件名document.body.appendChild(downloadElement);downloadElement.click(); //点击下载document.body.removeChild(downloadElement); //下载完成移除元素window.URL.revokeObjectURL(href); //释放掉blob对象}}});
},

二、请求方法

一定要设置响应类型,否则会是空白pdf

// PDF下载
export function pdfDownload(id) {return request({url: '/xxx/xx/xxx/xxxxx/' + id,responseType: 'arraybuffer',//返回数据类型method: 'get'})
}

三、后端响应方式

这是静态方法 ,业务逻辑自行调用,文件流输出

    /*** pdf下载* @author luvJie-7c* @date 2022-8-5 17:31* @param fileName 文件名* @param path 文件路径* @return void*/public static String previewPdf(String fileName, String path){//获取HttpServletResponse (静态自创建)HttpServletResponse response =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();// 验证该文件是否是存在if(new File(path).exists()){//添加跨域访问response.setHeader("Access-Control-Allow-Origin", "*");//以流的形式传输response.setContentType("application/octet-stream");// 设置文件流编码格式response.setCharacterEncoding("UTF-8");//Content-Disposition属性名 (attachment表示以附件的方式下载;inline表示在页面内打开)response.setHeader("Content-Disposition", "attachment; fileName="+fileName+".pdf");try { //输入输出FileInputStream is = new FileInputStream(path);ServletOutputStream out = response.getOutputStream();byte[] buffer = new byte[1024];int i = 0;while ((i = is.read(buffer)) != -1) {out.write(buffer,0,i);}//缓存区的数据进行输出out.flush();//关闭流out.close();is.close();} catch (IOException e) {e.printStackTrace();}}return exist;}

uni-app实现PDF文件下载功能相关推荐

  1. java实现word、pdf文件下载功能

    在SpringMVC的开发过程中,有时需要实现文档的下载功能.文档的下载功能涉及到了java IO流操作的基础知识,下面本文详细介绍java如何实现后台文档下载功能. 首先根据文档在项目中的存储路径建 ...

  2. uni app实现WIFI功能(只支持安卓APP)

    uni app实现WIFI功能 一.前言 二.使用 uni-WIFI 三.使用h5+ api 一.前言 最近需要在uniapp上实现WiFi功能,将个人的研究结果记录如下(都只支持安卓APP) 使用 ...

  3. ASP.NET网页中RAR、DOC、PDF等文件下载功能实例源代码

    以前做asp.net下载功能的时候都是采用: <a href="http://www.wang0214.com/wgcms">下载</a> 的方式来实现下载 ...

  4. 切换 uniapp_万能前端框架uni app初探03:底部导航开发

    前言 本节我们使用uni app的底部导航功能,点击不同tab会显示不同页面,这个功能在实际项目开发中几乎是必备的. 一.基础知识 1.tabBar 如果应用是一个多 tab 应用,可以通过 tabB ...

  5. java文件日志功能_JAVA文件下载功能问题解决日志

    今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的con ...

  6. pdfviewpager_Android客户端实现查阅PDF文件功能

    团队项目最新一次迭代中提出APP内置打开PDF功能,还没有接到具体的开发任务,不过今天的开发任务不是很重,所以稍微搜索了解了一下Android端实现查看PDF文件功能的思路或者说是解决方案,也算是做一 ...

  7. PHP使用header实现文件下载功能

    这篇文章主要介绍了PHP使用header方式实现文件下载功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下 先给大家介绍下PHP header() 函数 定义和用法 header() 函数向客户端 ...

  8. Word文档转PDF的功能

    最近项目中有用到Word文档转PDF的功能,做了一些尝试,也遇到了一些困难.  下面把尝试的情况记录下来,也希望做过类似工作的童鞋能一起探讨一下.  http://www.iteye.com/topi ...

  9. php功能代码下载,php支持分块与断点续传文件下载功能代码

    本文章要介绍了这篇文章是一篇关于php流下载,就是可以支持分块与断点续传文件下载,有需要的朋友可以看看. 代码如下 复制代码 $dowmFile = dirname ( __FILE__ ) . '/ ...

最新文章

  1. 黄聪:C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件
  2. python编程程序设计_程序设计入门—Python
  3. Python高级特性:切片
  4. 导出excel——入门
  5. 文档生成工具Sandcastle Help File Builder
  6. windows 2008 R2下安装Exchange 2010(单域环境下)
  7. POJ2243 Knight Moves —— A*算法
  8. 【Python】pandas模块中更改Series的数据类型
  9. 使用libcurl进行HTTP PUT
  10. Chia如何提高P盘速度
  11. 如何停止Linux系统中占用CPU 100%的进程
  12. h5 如何录音保存上传_html5 网页录音、试听以及上传
  13. Android-视频缩略图的获取
  14. 微信怎么开直播卖货?
  15. “逃离北上广”——你以为回到小城市就很幸福了么?
  16. mmdetection - config配置文件之schedule(learning rate)
  17. upc 个人训练赛第二场:高精度计算
  18. 办公软件excel表格_Office 办公软件教程丨Word,Excel,PPT
  19. c++ STL 容器
  20. Quartus 调试笔记

热门文章

  1. DDoS攻击增多 浅析防御之道
  2. matplotlib入门教程笔记
  3. 用计算机来传递信息的故事,古人传递信息的故事有几个
  4. createfile调用失败_汇编语言CreateFile函数:创建新文件或者打开已有文件
  5. 小伙居然查到了小学同学的信息,从微信撤回功能看个人隐私泄露
  6. unity2018.4.3f1实现中国象棋游戏(二)
  7. c语言实现滑动平均_方格网上观测数据的窗口滑动平均处理——C语言
  8. php国际儿童绘画,北京FineArt儿童创意美术课6-8岁
  9. android找回密码界面的代码,《Android项目实战-博学谷》设置密保找回密码
  10. tolower函数什么意思c语言,tolower ()在c语言中是什么意思