0、引入依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
一、controller层
@Operation( summary = "下载2")
@GetMapping("/")
@ResponseBody
public void downloadZip(@RequestParam(defaultValue = "D:\\uploads\\ITCHARGING-9017-项目制列账优化需求测试报告.docx") String downloadPath, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
//下载图片
// downloadPath="D:\\uploads\\ITCHARGING-9017-项目制列账优化需求测试报告.docx";
String down = downloadUtil.downloadPathFile(downloadPath, request, response);
}
二、service层-接口
/**
* @Description:下载
* @Param downloadPath 文件路径
*/
String downloadPathFile(String downloadPath, HttpServletRequest request, HttpServletResponse response);
三、service层-实现类
/**
* @Description:下载
* @Param downloadPath 文件路径
*/
@Override
public String downloadPathFile(String path, HttpServletRequest request, HttpServletResponse response) {
//设置文件路径
File file = new File(path);
//获取文件名称
String fileName = file.getName();
//判断文件是否存在
if (file.exists()) {
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
file.delete();
return "下载成功";
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return "下载失败";
}
参考:https://blog.youkuaiyun.com/xinshoumeinianda/article/details/127884877