1.使用fileUpload 将所需要的包导入项目
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
2.配置user-servlet.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
</bean>
3.封装表单
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
UserName:<sf:input path="username"/><sf:errors path="username"/><br/>
Password:<sf:password path="password"/><sf:errors path="password"/><br/>
Nickname:<sf:input path="nickname"/><sf:errors path="nickname"/><br/>
Email: <sf:input path="email"/><sf:errors path="email"/><br/>
photo:<input type="file" name="photo"/><br/>
<input type="submit"/>
</sf:form>
4.编写UserContorller.java
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Valid User user,BindingResult binding,MultipartFile photo) {//BindingResult必须要在验证的对象之后
if(binding.hasErrors()){
System.out.println("=========BindingResult============");
return "user/add";
}
System.out.println(photo.getContentType()+","+photo.getName()+","+photo.getOriginalFilename());
users.put(user.getUsername(), user);
//加上前缀 使用客户端跳转 防止重复提交
return InternalResourceViewResolver.REDIRECT_URL_PREFIX+"/user/users";
}
测试后输出信息:image/jpeg,photo,IMG_20130328_203227.jpg
5.将文件保存起来UserContorller.java
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Valid User user,BindingResult binding,MultipartFile photo,HttpServletRequest request) {//BindingResult必须要在验证的对象之后
if(binding.hasErrors()){
System.out.println("=========BindingResult============");
return "user/add";
}
System.out.println(photo.getContentType()+","+photo.getName()+","+photo.getOriginalFilename());
String realPath = request.getSession().getServletContext().getRealPath("/resources/upload")+File.separator+photo.getOriginalFilename();
File file = new File(realPath);
System.out.println("*******"+realPath);
try {
photo.transferTo(file);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
users.put(user.getUsername(), user);
//加上前缀 使用客户端跳转 防止重复提交
return InternalResourceViewResolver.REDIRECT_URL_PREFIX+"/user/users";
}
6.上传多个文件 注意要验证
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Valid User user,BindingResult binding,@RequestParam(required=false) MultipartFile[] photos,HttpServletRequest request) {//BindingResult必须要在验证的对象之后
if(binding.hasErrors()){
System.out.println("=========BindingResult============");
return "user/add";
}
for(MultipartFile photo:photos){
if((!(photo.getOriginalFilename()==null||"".equals(photo.getOriginalFilename())))){//可以直接改为photo.isEmpty()
System.out.println(photo.getContentType()+","+photo.getName()+","+photo.getOriginalFilename());
String realPath = request.getSession().getServletContext().getRealPath("/resources/upload")+File.separator+photo.getOriginalFilename();
File file = new File(realPath);
System.out.println("*******"+realPath);
try {
photo.transferTo(file);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
users.put(user.getUsername(), user);
//加上前缀 使用客户端跳转 防止重复提交
return InternalResourceViewResolver.REDIRECT_URL_PREFIX+"/user/users";
}