SpingMVC做文件下载
第一步设置配置文件让项目可以解析复杂表单类型
<!--复杂类型表单的解析器
id:必须使用multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--以字节为单位-->
<property name="maxUploadSize" value="999999999999999999"></property>
</bean>
第二步编写jsp页面
注意这儿的要传的实际参数fileName必须和controller里的
参数列表形参名字一致
<c:forEach var="name" items="${listName}">
<img src="${path}/upload/${name}" width="100" height="120"><br>
<a href="download.do?fileName=${name}">点击下载 ${name}</a>
</c:forEach>
第三步controller编写
@Controller
@RequestMapping("/download")
public class DownloadController {
@RequestMapping("/download.do")
//这儿参数列表里的fileName必须和jsp页面实际要接收的一致
public String download(String fileName, HttpServletRequest req, HttpServletResponse rep) throws IOException {
//设置响应类型
rep.setContentType("application/x-msdownload");
//设置头信息
rep.setHeader("Content-Disposition","attachment;filename="+fileName);
//获取根路径
String realPath = req.getSession().getServletContext().getRealPath("/");
realPath=realPath+"/upload/";
//文件下载
Files.copy(Paths.get(realPath,fileName),rep.getOutputStream());
return "success";
}
//获取文件下载列表
@RequestMapping("/toDownload.do")
public String toDownload(HttpServletRequest req, Model model) {
String realPath = req.getSession().getServletContext().getRealPath("/");
realPath=realPath+"/upload";
File file = new File(realPath);
List<String> listName=new ArrayList<>();
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File file1 : files) {
String name = file1.getName();
listName.add(name);
}
}
//使用model将结果集返回到视图页面
model.addAttribute("listName",listName);
return "download";
}
}
本文详细介绍如何在SpringMVC中实现文件下载功能,包括配置文件解析复杂表单类型、编写JSP页面和Controller,以及处理文件下载的具体步骤。

264

被折叠的 条评论
为什么被折叠?



