当前位置: 代码迷 >> Web前端 >> spring mvc web应用程序的资料上传功能
  详细解决方案

spring mvc web应用程序的资料上传功能

热度:317   发布时间:2013-08-10 21:14:06.0
spring mvc web应用程序的文件上传功能

spring mvc 支持web应用程序的文件上传功能,是由spring内置的即插即用的MultipartResolver来实现的,这些解析器都定义在org.springframework.web.multipart包里。下面将使用CommonsMultipartResolver解析器来实现简单的文件上传功能。?

??? 在web应用程序上下文配置文件中(我的配置文件名为 /WEB-INF/config/app-config.xml)定义如下:?

Xml代码??收藏代码
  1. <bean?id="multipartResolver"??
  2. ?class="org.springframework.web.multipart.commons.CommonsMultipartResolver">??
  3. ?<!--?以字节为单位的最大上传文件的大小?-->??
  4. ?<property?name="maxUploadSize"?value="100000"?/>??
  5. </bean>??


??? 加入两个依赖的jar包(spring官网可以下载到对应版本的常用依赖jar包):?

??? com.springsource.org.apache.commons.io-1.4.0.jar?
??? com.springsource.org.apache.commons.fileupload-1.2.0.jar?

??? 创建一个HTML表单:?

Html代码??收藏代码
  1. <body>??
  2. ?<h1>??
  3. ??Spring?MVC?3.0?文件上传测试??
  4. ?</h1>???//action里的html是后缀名,不是HTML文件,用于spring对请求进行拦截判断??
  5. ?<form.?method="post"?action="upload.html"?enctype="multipart/form-data">??
  6. ??<input?type="text"?name="name"?/>??
  7. ??<input?type="file"?name="file"?/>??
  8. ??<input?type="submit"?/>??
  9. ?</form>??
  10. </body>??



??? 创建一个controller(控制器)来处理文件上传请求,FileUploadController.java:?

Java代码??收藏代码
  1. @Controller?//声明该类为控制器类??
  2. public?class?FileUploadController?implements?ServletContextAware{?//实现ServletContextAware接口,获取本地路径??
  3. ??
  4. ?private?ServletContext?servletContext;??
  5. ??
  6. ?public?void?setServletContext(ServletContext?servletContext)?{?//实现接口中的setServletContext方法??
  7. ??this.servletContext?=?servletContext;??
  8. ?}??
  9. ??
  10. ?@RequestMapping(value?=?"/upload",?method?=?RequestMethod.POST)?//将文件上传请求映射到该方法??
  11. ?public?String?handleFormUpload(@RequestParam("name")?String?name,?//设置请求参数的名称和类型??
  12. ???@RequestParam("file")?CommonsMultipartFile?mFile)?{?//请求参数一定要与form中的参数名对应??
  13. ??if?(!mFile.isEmpty())?{??
  14. ???String?path?=?this.servletContext.getRealPath("/tmp/");??//获取本地存储路径??
  15. ???File?file?=?new?File(path?+?new?Date().getTime()?+?".jpg");?//新建一个文件??
  16. ???try?{??
  17. ????mFile.getFileItem().write(file);?//将上传的文件写入新建的文件中??
  18. ???}?catch?(Exception?e)?{??
  19. ????e.printStackTrace();??
  20. ???}??
  21. ?????
  22. ???return?"redirect:uploadSuccess";?//返回成功视图??
  23. ??}else?{??
  24. ???return?"redirect:uploadFailure";?//返回失败视图??
  25. ??}??
  26. ?}??
  27. } ?
  相关解决方案