一、SpringMVC支持文件下载
假设要下载项目中的jQuery-3.4.1.js文件。
@RequestMapping("/download")
public ResponseEntity<byte[]> download(HttpServletRequest request) throws Exception {
// 1.得到要下载文件的真实路径
ServletContext servletContext = request.getServletContext();
String realPath = servletContext.getRealPath("/jQuery/jQuery-3.4.1.js");
// 2.得到要下载的文件的流
FileInputStream is = new FileInputStream(realPath);
byte[] temp = new byte[is.available()];// 使用available获取的大小和文件大小相同
is.read(temp);
is.close();
// 3.将要下载的文件流返回
HttpHeaders httpHeaders = new HttpHeaders();// 自定义响应头
httpHeaders.set("Content-Disposition", "attachment;filename=jQuery-3.4.1.js");
return new ResponseEntity<byte[]>(temp, httpHeaders, HttpStatus.OK);
}
使用该路径请求访问项目时,就会出现下载提示:
二、SpringMVC支持文件上传
1.导入文件上传的两个jar包
2.index.jsp前端页面
- 文件上传表单准备:
enctype="multipart/form-data"
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
pageContext.setAttribute("ctp",request.getContextPath());
%>
</head>
<body>
${msg }
<form action="${ctp }/upload" method="post" enctype="multipart/form-data">
用户头像:<input type="file" name="headerimg" /><br/>
用户名:<input type="text" name="username"/><br/>
<input type="submit"/>
</form>
</body>
3.配置文件上传解析器
- maxUploadSize参数为上传最大限制大小。
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="#{1024*1024*20}"></property>
<property name="defaultEncoding" value="utf-8"></property>
</bean>
4.文件上传请求处理
- 使用
@RequestParam("headerimg")
MultipartFile file封装文件信息。
@RequestMapping("/upload")
public String upload(@RequestParam(value = "username", required = false) String username,
@RequestParam("headerimg") MultipartFile file, Model model) {
System.out.println("上传的文件的信息:");
System.out.println("文件项的名字:" + file.getName());
System.out.println("文件名:" + file.getOriginalFilename());
// 文件保存
try {
file.transferTo(new File("D:\\AAA\\" + file.getOriginalFilename()));
model.addAttribute("msg", "文件上传成功了");
} catch (IllegalStateException | IOException e) {
model.addAttribute("msg", "文件上传失败了" + e.getMessage());
}
return "forward:/index.jsp";
}
填好表单,单击提交按钮后成功回显信息,并上传到了指定目录:
三、多文件上传
与上面的单文件类似,不同地方只是需要将MultipartFile
替换MultipartFile[]
。
@RequestMapping("/upload")
public String upload(@RequestParam(value = "username", required = false) String username,
@RequestParam("headerimg") MultipartFile[] file, Model model) {
System.out.println("上传的文件的信息:");
for (MultipartFile multipartFile : file) {
if (!multipartFile.isEmpty()) {
try {
model.addAttribute("msg", "文件上传成功");
multipartFile.transferTo(new File("D:\\AAA\\" + multipartFile.getOriginalFilename()));
} catch (IllegalStateException | IOException e) {
model.addAttribute("msg", "文件上传失败" + e.getMessage());
}
}
}
return "forward:/index.jsp";
}
转载:https://blog.csdn.net/weixin_43691058/article/details/105599822
查看评论