读书人

spring实现文件下传

发布时间: 2012-10-24 14:15:58 作者: rapoo

spring实现文件上传

Spring由内置的multipart支持web应用中的文件上传。multipart支持的设计是通过定义org.springframework.web.multipart包中的插件对象MultipartResovler来完成的。Spring提供MultipartResolver可以支持Commons FileUpload (http://jakarta.apache.org/commons/fileupload)和COS FileUpload (http://www.servlets.com/cos)。本章后面的部分描述了文件上传是如何支持的。

缺省,Spring是没有multipart处理,因为一些开发者想要自己处理它们。如果你想使用Spring的multipart,需要在web应用的上下文中添加multipart解析器。这样,每个请求就会被检查是否包含multipart。然而,如果请求中包含multipart,你的上下文中定义的MultipartResolver就会解析它。这样,你请求中的multipart属性就会象其它属性一样被处理。

使用MultipartResolver
下面的例子说明了如何使用CommonsMultipartResolver:

<bean id="multipartResolver"
??? action="upload.do" enctype="multipart/form-data">??????????? <input type="file" name="contents" onchange="getvalue()"/>??????????? <input type="hidden" name="name"/>??????????? <input type="submit"/> </form>关于enctype部分的解释:使用multipart,你需要创建一个带文件上传域的表单,让Spring将文件绑定到你的表单上------------------------------------------最后请在你的tomcat的command/lib目录中添加commons-io.jar、commons-fileupload.jar包~~!

?

?

?

?

?

?

?

web.xml片段:

??

  1. <servlet>??????????<servlet-name>springServlet</servlet-name>??
  2. ????????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>?? ????????<load-on-startup>2</load-on-startup>??
  3. ????</servlet>?? ????<servlet-mapping>??
  4. ????????<servlet-name>springServlet</servlet-name>?? ????????<url-pattern>*.do</url-pattern>??
  5. ????</servlet-mapping>??

?

?

servlet.xml片段:

?

  1. <bean?id="multipartResolver"?????????????class="org.springframework.web.multipart.commons.CommonsMultipartResolver">??
  2. ????????????<!--?设置上传文件的最大尺寸为10MB?-->?? ????????????<property?name="maxUploadSize">??
  3. ????????????<value>100010485761</value>?? ????????</property>??
  4. ????</bean>??

?

?

Controller:

?

  1. @RequestMapping(params?=?"method=upload") ??????protected?ModelAndView?uploadFile(HttpServletRequest?request) ??
  2. ????????????throws?Exception?{ ?? ????????try{ ??
  3. ????????????//cast?to?multipart?file?so?we?can?get?additional?information ?? ????????????MultipartHttpServletRequest?multipartRequest?=?(MultipartHttpServletRequest)?request; ??
  4. ????????????CommonsMultipartFile?file?=?(CommonsMultipartFile)?multipartRequest.getFile("file"); ?? ????????????System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); ??
  5. ????????????byte[]?bytes?=?file.getBytes(); ?? ????????????String?uploadDir?=?"c:\\uploadFile"; ??
  6. ????????????System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"?+?uploadDir); ?? ????????????File?dirPath?=?new?File(uploadDir); ??
  7. ????????????if?(!dirPath.exists())?{ ?? ????????????????dirPath.mkdirs(); ??
  8. ????????????} ??????????????String?sep?=?System.getProperty("file.separator"); ??
  9. ????????????if?(log.isDebugEnabled())?{ ?? ????????????????log.debug("uploading?to:?"?+?uploadDir?+?sep?+ ??
  10. ????????????????file.getOriginalFilename()); ??????????????????} ??
  11. ????????????File?uploadedFile?=?new?File(uploadDir?+?sep ?? ????????????????????+?file.getOriginalFilename()); ??
  12. ????????????FileCopyUtils.copy(bytes,?uploadedFile); ??????????????System.out.println("********************************"); ??
  13. ????????????System.out.println(uploadedFile.getAbsolutePath()); ??????????????System.out.println(bytes.length); ??
  14. ????????????System.out.println("********************************"); ?? ????????}catch(Exception?e){ ??
  15. ????????????e.printStackTrace(); ??????????} ??
  16. ????????return?new?ModelAndView(""); ?? ????}??

?

页面:

?

  1. <form?method="post"?action="collParam.do?method=upload"?enctype="multipart/form-data">??<input?type="file"?name="file"?id="file"/>??
  2. <input?type="submit"?value="save"/>?? </form>??

读书人网 >软件架构设计

热点推荐