SpringBoot实现服务器PDF文件的下载和预览功能
一、前言
一般我们的项目需要实现下载和预览功能,我们这次主要通过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) throws
IOException {
FileInputStream is = new FileInputStream(new File("D:\\Idea\\stamp\\Itext\\src\\main\\resources\\pdf\\EncryptPDF.pdf"));
// 清空response
response.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、下载功能
2、预览功能
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfkkkji
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13