spring3 文件上传

spring支持在网络应用程序处理文件上传,提供拔插的org.springframework.web.multipart.MultipartResolver对象 。

在写上传文件的前提下需提供两个jar包:


1.添加上传拦截,可指定上传的大小

Java代码 收藏代码
  1. <!--上传拦截,如最大上传值及最小上传值-->
  2. <beanid="multipartResolver"
  3. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  4. <!--oneofthepropertiesavailable;themaximumfilesizeinbytes-->
  5. <propertyname="maxUploadSize"value="100000"/>
  6. </bean>

2.添加java后台处理的API

Java代码 收藏代码
  1. @RequestMapping(value="/form",method=RequestMethod.POST)
  2. publicStringhandleFormUpload(@RequestParam("name")Stringname,
  3. @RequestParam("file")MultipartFilefile){
  4. if(!file.isEmpty()){
  5. byte[]bytes=file.getBytes();
  6. //去理上传写文件代码
  7. }

具体文件

spring_mvc.xml

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  11. <!--注解资源扫描包路径-->
  12. <context:component-scanbase-package="org.spring.mvc"/>
  13. <bean
  14. class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
  15. <bean
  16. class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
  17. <!--对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析-->
  18. <beanid="viewResolver"
  19. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  20. <propertyname="viewClass"
  21. value="org.springframework.web.servlet.view.JstlView"/>
  22. <propertyname="prefix"value="/"/><!--跳转页面的前缀路径如/web-inf/user/-->
  23. <propertyname="suffix"value=".jsp"></property><!--跳转页面后缀如helloWorld.jsp-->
  24. </bean>
  25. <!--上传拦截,如最大上传值及最小上传值-->
  26. <beanid="multipartResolver"
  27. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  28. <!--oneofthepropertiesavailable;themaximumfilesizeinbytes-->
  29. <propertyname="maxUploadSize"value="100000"/>
  30. </bean>
  31. </beans>

FileUploadController.java文件

Java代码 收藏代码
  1. packageorg.spring.mvc.upload;
  2. importjava.io.FileOutputStream;
  3. importjava.io.IOException;
  4. importjava.io.InputStream;
  5. importjava.util.List;
  6. importorg.slf4j.Logger;
  7. importorg.slf4j.LoggerFactory;
  8. importorg.spring.mvc.HelloWorldController;
  9. importorg.springframework.stereotype.Controller;
  10. importorg.springframework.web.bind.annotation.RequestMapping;
  11. importorg.springframework.web.bind.annotation.RequestMethod;
  12. importorg.springframework.web.bind.annotation.RequestParam;
  13. importorg.springframework.web.multipart.MultipartFile;
  14. importorg.springframework.web.multipart.MultipartHttpServletRequest;
  15. /**
  16. *上传文件
  17. *@authorchenyw
  18. *
  19. */
  20. @Controller
  21. @RequestMapping(value="/toFileUpload")
  22. publicclassFileUploadController{
  23. privateLoggerlogger=LoggerFactory.getLogger(HelloWorldController.class);
  24. /**
  25. *单文件上传
  26. *@paramname@RequestParam取得name字段的值
  27. *@paramfile文件
  28. *@return
  29. *@throwsIOException
  30. */
  31. @RequestMapping(value="/oneFileUpload",method=RequestMethod.POST)
  32. publicStringhandleFormUpload(@RequestParam("name")
  33. Stringname,@RequestParam("file")
  34. MultipartFilefile)throwsIOException{
  35. logger.info("name:"+name);
  36. logger.info("上传文件:"+file.getOriginalFilename());
  37. if(!file.isEmpty()){
  38. this.copyFile(file.getInputStream(),file.getOriginalFilename());
  39. }
  40. return"fileUpload/success";
  41. }
  42. /**
  43. *多文件上传
  44. *@paramrequest
  45. *@paramname
  46. *@return
  47. *@throwsException
  48. */
  49. @RequestMapping(value="/multipartFileUpload",method=RequestMethod.POST)
  50. publicStringupload2(
  51. MultipartHttpServletRequestrequest,
  52. @RequestParam("name")Stringname//页面上的控件值
  53. )throwsException{
  54. List<MultipartFile>files=request.getFiles("file");
  55. for(inti=0;i<files.size();i++){
  56. if(!files.get(i).isEmpty()){
  57. logger.info("上传文件:"+files.get(i).getOriginalFilename());
  58. this.copyFile(files.get(i).getInputStream(),files.get(i).getOriginalFilename());
  59. }
  60. }
  61. logger.info("success");
  62. return"fileUpload/success";
  63. }
  64. /**
  65. *写文件到本地
  66. *@paramin
  67. *@paramfileName
  68. *@throwsIOException
  69. */
  70. privatevoidcopyFile(InputStreamin,StringfileName)throwsIOException{
  71. FileOutputStreamfs=newFileOutputStream("d:/upload/"
  72. +fileName);
  73. byte[]buffer=newbyte[1024*1024];
  74. intbytesum=0;
  75. intbyteread=0;
  76. while((byteread=in.read(buffer))!=-1){
  77. bytesum+=byteread;
  78. fs.write(buffer,0,byteread);
  79. fs.flush();
  80. }
  81. fs.close();
  82. in.close();
  83. }
  84. }

单文件上传页面oneFileUpload.jsp

Jsp代码 收藏代码
  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
  2. <%
  3. Stringpath=request.getContextPath();
  4. StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
  7. <html>
  8. <head>
  9. <basehref="<%=basePath%>">
  10. <title>MyJSP'oneFileUpload.jsp'startingpage</title>
  11. <metahttp-equiv="pragma"content="no-cache">
  12. <metahttp-equiv="cache-control"content="no-cache">
  13. <metahttp-equiv="expires"content="0">
  14. <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
  15. <metahttp-equiv="description"content="Thisismypage">
  16. <!--
  17. <linkrel="stylesheet"type="text/css"href="styles.css">
  18. -->
  19. </head>
  20. <body>
  21. ThisismyonefileUploadpage.<br>
  22. <formmethod="POST"action="toFileUpload/oneFileUpload"enctype="multipart/form-data">
  23. <inputtype="text"name="name"/>
  24. <inputtype="file"name="file"/>
  25. <inputtype="submit"/>
  26. </form>
  27. </body>
  28. </html>

多文件上传页面multipartFileUpload.jsp

Jsp代码 收藏代码
  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
  2. <%
  3. Stringpath=request.getContextPath();
  4. StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
  7. <html>
  8. <head>
  9. <basehref="<%=basePath%>">
  10. <title>MyJSP'multipartFileUpload.jsp'startingpage</title>
  11. <metahttp-equiv="pragma"content="no-cache">
  12. <metahttp-equiv="cache-control"content="no-cache">
  13. <metahttp-equiv="expires"content="0">
  14. <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
  15. <metahttp-equiv="description"content="Thisismypage">
  16. <!--
  17. <linkrel="stylesheet"type="text/css"href="styles.css">
  18. -->
  19. </head>
  20. <body>
  21. ThisismultipartFileUploadpage.<br>
  22. <formmethod="POST"action="toFileUpload/multipartFileUpload"enctype="multipart/form-data">
  23. <inputtype="text"name="name"/><br>
  24. <inputtype="file"name="file"/><br>
  25. <inputtype="file"name="file"/><br>
  26. <inputtype="submit"/><br>
  27. </form>
  28. </body>
  29. </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值