程序员小王的博客:程序员小王的博客
欢迎点赞 收藏 ⭐留言
如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
java自学的学习路线:java自学的学习路线
一般我们的项目需要实现下载和预览功能,我们这次主要通过HttpServletResponse输出流实现文件的下载和预览功能
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.2.5.RELEASEversion>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>commons-fileuploadgroupId>
<artifactId>commons-fileuploadartifactId>
<version>1.3.1version>
dependency>
<dependency>
<groupId>commons-iogroupId>
<artifactId>commons-ioartifactId>
<version>2.5version>
dependency>
dependencies>
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();
}
}