@GetMapping("/download")
public void download(HttpServletResponse resp) {
try {
// 当前文件路径
String filePath = "D://temp/123.txt"
String fileName = URLEncoder.encode("123.txt",""UTF-8); // 文件名.
// 创建文件 .
File file = new File(filePath);
downFile(resp, file, fileName); // 文件下载
} catch (UnsupportedEncodingException e) {
logger.error(" === 文件名编码失败 === ", e);
}
}
// 下载文件 可以直接使用
private void downloadFile(HttpServletResponse resp, File file, String fileName) {
try {
if (file.exists() && file.isFile()) {
InputStream ins = new FileInputStream(file);
BufferedInputStream bins = new BufferedInputStream(ins);// 放到缓冲流里面
OutputStream outs = resp.getOutputStream();// 获取文件输出IO流
BufferedOutputStream bouts = new BufferedOutputStream(outs);
resp.setContentType("application/x-download");// 设置response内容的类型
resp.setHeader(
"Content-disposition",
"attachment;filename="
+ fileName);// 设置下载头部信息
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 开始向网络传输文件流
while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {
bouts.write(buffer, 0, bytesRead);
}
bouts.flush();// 刷新管道
ins.close();
bins.close();
outs.close();
bouts.close();
} else {
logger.error(" ==== 文件不存在 === ");
}
} catch (Exception e) {
logger.error(" 文件下载出现问题!! ", e);
}
}
微笑的java
欢迎关注转发评论点赞沟通,让编码不在孤单。