SpringMVC⽂件上传配置,多⽂件上传,使⽤的MultipartFile 基本的SpringMVC的搭建在我的上⼀篇⽂章⾥已经写过了,这篇⽂章主要说明⼀下如何使⽤SpringMVC进⾏表单上的⽂件上传以及多个⽂件同时上传的步骤
SpringMVC 基础教程 框架分析:
⼀、配置⽂件:
SpringMVC ⽤的是 的MultipartFile来进⾏⽂件上传 所以我们⾸先要配置MultipartResolver:⽤于处理表单中的file
<!-- 配置MultipartResolver ⽤于⽂件上传使⽤spring的CommosMultipartResolver -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipartmons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8"
p:maxUploadSize="5400000"
p:uploadTempDir="fileUpload/temp"
>
</beans:bean>
其中属性详解:
defaultEncoding="UTF-8" 是请求的编码格式,默认为iso-8859-1
maxUploadSize="5400000" 是上传⽂件的⼤⼩,单位为字节
uploadTempDir="fileUpload/temp" 为上传⽂件的临时路径
⼆、创建⼀个简单的上传表单:
<body>
<h2>⽂件上传实例</h2>
<form action="fileUpload.html" method="post" enctype="multipart/form-data">
选择⽂件:<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
注意要在form标签中加上 enctype="multipart/form-data"表⽰该表单是要处理⽂件的,这是最基本的东西,很多⼈会忘记然⽽当上传出错后则去程序的错误,却忘了这⼀点
三、编写上传控制类
1、创建⼀个控制类: FileUploadController和⼀个返回结果的页⾯list.jsp
2、编写提交表单的action:
//通过Spring的autowired注解获取spring默认配置的request
@Autowired
private HttpServletRequest request;
/***
* 上传⽂件⽤@RequestParam注解来指定表单上的file为MultipartFile
*
* @param file
* @return
*/
@RequestMapping("fileUpload")
public String fileUpload(@RequestParam("file") MultipartFile file) {
// 判断⽂件是否为空
if (!file.isEmpty()) {
try {
// ⽂件保存路径
String filePath = Session().getServletContext().getRealPath("/") + "upload/" + OriginalFilename();
// 转存⽂件
} catch (Exception e) {
e.printStackTrace();
}
}
// 重定向
return "redirect:/list.html";
}
/***
* 读取上传⽂件中得所有⽂件并返回
*
* @return
*/
@RequestMapping("list")
public ModelAndView list() {
String filePath = Session().getServletContext().getRealPath("/") + "upload/"; ModelAndView mav = new ModelAndView("list");
File uploadDest = new File(filePath);
String[] fileNames = uploadDest.list();
for (int i = 0; i < fileNames.length; i++) {
//打印出⽂件名
System.out.println(fileNames[i]);
}
return mav;
}
3、使⽤SpringMVC注解RequestParam来指定表单中的file参数;
4、指定⼀个⽤于保存⽂件的web项⽬路径
5、通过MultipartFile的transferTo(File dest)这个⽅法来转存⽂件到指定的路径。
到此基本的⽂件上传就结束了。
MultipartFile类常⽤的⼀些⽅法:
String getContentType()//获取⽂件MIME类型
InputStream getInputStream()//后去⽂件流
String getName() //获取表单中⽂件组件的名字
String getOriginalFilename() //获取上传⽂件的原名
long getSize() //获取⽂件的字节⼤⼩,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到⼀个⽬标⽂件中。
四、多⽂件上传。
多⽂件上传其实很简单,和上传其他相同的参数如checkbox⼀样,表单中使⽤相同的名称,然后action中将MultipartFile参数类定义为数组就可以。接下来实现:
1、创建⼀个上传多⽂件的表单:
<body>
<h2>上传多个⽂件实例</h2>
<form action="filesUpload.html" method="post"
enctype="multipart/form-data">
<p>
选择⽂件:<input type="file" name="files">
<p>
选择⽂件:<input type="file" name="files">
<p>
选择⽂件:<input type="file" name="files">
<p>
<input type="submit" value="提交">
</form>
</body>
2、编写处理表单的action,将原来保存⽂件的⽅法单独写⼀个⽅法出来⽅便共⽤:
/***
* 保存⽂件
* @param file
* @return
*/
private boolean saveFile(MultipartFile file) {
// 判断⽂件是否为空
if (!file.isEmpty()) {
try {
// ⽂件保存路径
String filePath = Session().getServletContext().getRealPath("/") + "upload/"
+ OriginalFilename();
// 转存⽂件
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
3、编写action:
@RequestMapping("filesUpload")
public String filesUpload(@RequestParam("files") MultipartFile[] files) {
//判断file数组不能为空并且长度⼤于0
if(files!=null&&files.length>0){
//循环获取file数组中得⽂件
for(int i = 0;i<files.length;i++){
MultipartFile file = files[i];
//保存⽂件
saveFile(file);
}
}
// 重定向
return "redirect:/list.html";
springmvc常用标签}
最后运⾏项⽬上传⽂件:
因为⼯作的原因写博客和教程的时间越来越少了,所以今后的博客尽量简短明了,以实践使⽤为主,
同时也欢迎⼤家关注我的个⼈来提相关问题,我会⼒所能及的回答。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论