SpringBoot实现服务器PDF文件的下载和预览功能

news/2024/11/24 6:32:50/

🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线

文章目录

  • 一、前言
  • 二、项目之前的准备
  • 三、项目实现代码
  • 四、功能演示
      • 1、下载功能
      • 2、预览功能

一、前言

一般我们的项目需要实现下载和预览功能,我们这次主要通过HttpServletResponse输出流实现文件的下载和预览功能

二、项目之前的准备

  • 我们需要准备maven依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version>
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version></dependency></dependencies>
  • 提前准备好pdf文件

三、项目实现代码

package com.whj.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;/*** @author 王恒杰* @date 2022/10/26 9:26* @Description:*/
@RestController
@RequestMapping("/file")
public class FileController {@GetMapping("/downloadFile")public void downloadCheck(HttpServletRequest request, HttpServletResponse response) {try {File file = new File("D:\\Idea\\stamp\\Itext\\src\\main\\resources\\pdf\\EncryptPDF.pdf");BufferedInputStream bis = null;OutputStream os = null;FileInputStream fileInputStream = null;response.setCharacterEncoding("utf-8");response.setContentType("application/pdf");response.setHeader("Content-Disposition", "attachment; filename=EncryptPDF");try {fileInputStream = new FileInputStream(file);byte[] buff = new byte[1024];bis = new BufferedInputStream(fileInputStream);os = response.getOutputStream();int i = bis.read(buff);while (i != -1) {os.write(buff, 0, buff.length);i = bis.read(buff);os.flush();}os.flush();os.close();
//                return SimpleResult.ok("导出成功",os);} catch (IOException e) {e.printStackTrace();
//                return SimpleResult.fail("导出失败",null);} finally {if (bis != null) {try {bis.close();fileInputStream.close();} catch (IOException e) {e.printStackTrace();
//                        return SimpleResult.fail("导出失败",null);}}}} catch (Exception e) {e.printStackTrace();}}@GetMapping("/previewCheck")public void previewCheck( HttpServletRequest request, HttpServletResponse response) throwsIOException {FileInputStream is = new FileInputStream(new File("D:\\Idea\\stamp\\Itext\\src\\main\\resources\\pdf\\EncryptPDF.pdf"));// 清空responseresponse.reset();//2、设置文件下载方式response.setCharacterEncoding("utf-8");response.setContentType("application/pdf");OutputStream outputStream = response.getOutputStream();int count = 0;byte[] buffer = new byte[1024 * 1024];while ((count = is.read(buffer)) != -1) {outputStream.write(buffer, 0, count);}outputStream.flush();}
}

四、功能演示

1、下载功能

  • 地址:http://localhost:8081/file/downloadFile

2、预览功能

  • 地址:http://localhost:8081/file/previewCheck


http://www.ppmy.cn/news/176395.html

相关文章

cnki下载pdf文档

CNKI PDF 全文下载用户脚本 众所周知&#xff0c;PDF 文件是当前电子文档发行的事实标准&#xff0c;其格式标准、安全性高、阅读器众多。特别是在学术领域&#xff0c;PDF 是全球通用的文献格式。然而&#xff0c;中国知网&#xff08;CNKI&#xff09;作为国内行业文献资源数…

java下载pdf6_疯狂java讲义第6版 电子版(pdf格式)

疯狂java讲义第6版pdf是李刚打造的经典java编程图书的最新版&#xff0c;为了帮助更多的读者能真正掌握Java编程&#xff0c;感受到Java语言的魅力&#xff0c;领会到Java编程的快乐&#xff0c;作者根据多年来的Java授课经验&#xff0c;精心编写了本书&#xff0c;喜欢可以在…

冰点下载器最新版

软件分享 支持多种文库资源下载&#xff0c;持续更新版本。 冰点下载器官方版下载&#xff0c;可以下载付费文档哦&#xff0c;是好用的文档下载软件&#xff0c;下载最新版本&#xff0c;免费试用哦&#xff01;功能多多&#xff0c;一键下载各种文档资源&#xff0c;提供各…

2019医学电子书下载PDF电子版下载

ICU诊疗精要&#xff08;第2版&#xff09;—&#xff08;美&#xff09;保尔兰肯著.pdf 14387339_心肺及胸腺疑难肿瘤诊断解析_王新美_2018年.pdf 眩晕症的诊断与治疗&#xff08;第5版&#xff09;.pdf 坎贝尔骨科手术学 第13版 典藏版 共八卷 2018年 超清带书签pdf版 宫腔镜…

值得拥有的5 款功能强大的免费 PDF 编辑器

编辑 PDF 文件可能是一个真正的挑战&#xff0c;尤其是当您找不到合适的工具时。此外&#xff0c;如今大多数工具都需要大量订阅。这意味着您必须在口袋里烧一个洞才能对 PDF 文件进行更改&#xff0c;但是等等&#xff0c;这是一个转折点。有一些免费使用的 PDF 编辑器可以帮助…

JavaScript前端:与PDF.js结合,实现网页PDF内容批量下载

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 JavaScript前端&#xff1a;与PDF.js结合&#xff0c;实现网页PDF内容批量下载 前言一、PDF.js是什么&#xff1f;二、PDF.js单个PDF文件下载三、与PDF.js结合&#xff0c;实…

php pdf只能查看不能下载,对于pdf文件不支持浏览器下载如何处理?

最近在工作中遇到这样一个问题,就是知道pdf文件的下载地址,但是所有浏览器对于pdf文件都是在浏览器中打开,不支持下载,需要用户下载下来。于是就做了一个html页面,把下载地址设为downpdf.php?pdfid="";这个pdfid是根据下面的数组的键名来定的,需要注意的是,对…

PDF编辑器:Adobe Acrobat XI Pro

下载&#xff1a; Adobe Acrobat Xi Pro v11.0.10官方简体中文破解版 链接&#xff1a;http://pan.baidu.com/s/1dFD1T0t 密码&#xff1a;ei3a 安装与破解&#xff1a; 参考下载下来的ReadME.txt中的教程 破解后联网打开过一会儿可能会出现序列号失效&#xff0c;这时候你…