🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅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