@Resource
private ResourceLoader resourceLoader;
@RequestMapping("file")
void download(String path, HttpServletResponse response, HttpServletRequest request) {
InputStream inputStream = null;
OutputStream servletOutputStream =null;
try {
// 下载保存的文件名
String filename = "视频文件下载.mp4";
org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:1.mp4");
// Excel 下载
// response.setContentType("application/vnd.ms-excel");
// 文件视频下载
response.setContentType("application/octet-stream");
response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.addHeader("charset", "utf-8");
response.addHeader("Pragma", "no-cache");
String encodeName = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName);
inputStream = resource.getInputStream();
servletOutputStream = response.getOutputStream();
IOUtils.copy(inputStream, servletOutputStream);
response.flushBuffer();
} catch (Exception e) {
} finally {
try {
if (servletOutputStream != null) {
servletOutputStream.close();
}
if (inputStream != null) {
inputStream.close();
}
// 召唤jvm的垃圾回收器
System.gc();
} catch (Exception e) {
e.printStackTrace();
}
}
}