springmvc文件下载
文件下载
使用NIO完成文件夹在几步轻松搞定
package com.sz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
@RequestMapping("/download")
public class FileDownloadController {
private String downloadPath = "D:" + File.separator;
// 下载D盘的reposi.rar
@RequestMapping("/m1")
public String m1(HttpServletResponse response){
String fileName = "reposi.rar";
// if()
// 构建FIle
// 构建一个Path对象
Path path = Paths.get(downloadPath,fileName);
if(Files.exists(path)){
// 如果路径对象存在,可以下载
// 通过response响应出去
// 设置好文件类型
response.setContentType("application/rar");
// 添加头信息,指定浏览器行为
response.addHeader("Content-Disposition",
"attachment; filename=像我这么帅的人当然是主角.rar");
// 准备拷贝
try {
Files.copy(path,response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
注意,如果是英文名称当然没问题,中文就尴尬了,必须要额外处理下
先以U8解开,然后以ISO8859-1重组
package com.sz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
@RequestMapping("/download")
public class FileDownloadController {
private String downloadPath = "D:" + File.separator;
// 下载D盘的reposi.rar
@RequestMapping("/m1")
public String m1(HttpServletResponse response){
String fileName = "reposi.rar";
// if()
// 构建FIle
// 构建一个Path对象
Path path = Paths.get(downloadPath,fileName);
if(Files.exists(path)){
// 如果路径对象存在,可以下载
// 通过response响应出去
// 设置好文件类型
response.setContentType("application/rar");
// 添加头信息,指定浏览器行为
response.setCharacterEncoding("UTF-8");
String newName = null;
try {
newName = new String("像我这么帅的人当然是主角".getBytes("UTF-8"),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.addHeader("Content-Disposition",
"attachment; filename=" +
newName+".rar");
// 准备拷贝
try {
Files.copy(path,response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现