您的位置:首页 > 编程语言 > Java开发

SpringMvc的文件上传 和如何获取服务器的真正的文件路径

2015-01-12 00:01 435 查看
1、在表单中注意使用 enctype="multipart/form-data"

<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<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"/><br/>
Email:<sf:input path="email"/><sf:errors path="email"/><br/>
Attach:<input type="file" name="attach"/><br/>
<input type="submit" value="添加用户"/>
</sf:form>


2.在springMvc的配置文件中设置如下内容

<!-- 设置multipartResolver才能完成文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
</bean>


3.后面的controller处理: 注意使用Apache 文件上传的jar包,和文件IO的jar包

@RequestMapping(value="/add",method=RequestMethod.POST)
public String add(@Validated User user,BindingResult br,@RequestParam("attach")MultipartFile attach,HttpServletRequest req) throws IOException {//一定要紧跟Validate之后写验证结果类
if(br.hasErrors()) {
//如果有错误直接跳转到add视图
return "user/add";
}
//获取upload文件夹得真实路径
String realpath = req.getSession().getServletContext().getRealPath("/resources/upload");
System.out.println(realpath);
System.out.println(attach.getName);//获取attach的属性名称,也就是前台表单的名称
System.out.println(attach.getOriginalFilename);//获取上传文件的名称
System.out.println(attach.getContentType);//获取上传文件的类型

for(MultipartFile attach:attachs) {
if(attach.isEmpty()) continue;
File f = new File(realpath+"/"+attach.getOriginalFilename());
//Apache的上传文件的工具类
FileUtils.copyInputStreamToFile(attach.getInputStream(),f);
}
users.put(user.getUsername(), user);
return "redirect:/user/users";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: