spring支持在网络应用程序处理文件上传,提供拔插的org.springframework.web.multipart.MultipartResolver对象 。
在写上传文件的前提下需提供两个jar包:
1.添加上传拦截,可指定上传的大小
- <!--上传拦截,如最大上传值及最小上传值-->
- <beanid="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!--oneofthepropertiesavailable;themaximumfilesizeinbytes-->
- <propertyname="maxUploadSize"value="100000"/>
- </bean>
2.添加java后台处理的API
- @RequestMapping(value="/form",method=RequestMethod.POST)
- publicStringhandleFormUpload(@RequestParam("name")Stringname,
- @RequestParam("file")MultipartFilefile){
- if(!file.isEmpty()){
- byte[]bytes=file.getBytes();
- //去理上传写文件代码
- }
具体文件
spring_mvc.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <!--注解资源扫描包路径-->
- <context:component-scanbase-package="org.spring.mvc"/>
- <bean
- class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
- <bean
- class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
- <!--对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析-->
- <beanid="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <propertyname="viewClass"
- value="org.springframework.web.servlet.view.JstlView"/>
- <propertyname="prefix"value="/"/><!--跳转页面的前缀路径如/web-inf/user/-->
- <propertyname="suffix"value=".jsp"></property><!--跳转页面后缀如helloWorld.jsp-->
- </bean>
- <!--上传拦截,如最大上传值及最小上传值-->
- <beanid="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!--oneofthepropertiesavailable;themaximumfilesizeinbytes-->
- <propertyname="maxUploadSize"value="100000"/>
- </bean>
- </beans>
FileUploadController.java文件
- packageorg.spring.mvc.upload;
- importjava.io.FileOutputStream;
- importjava.io.IOException;
- importjava.io.InputStream;
- importjava.util.List;
- importorg.slf4j.Logger;
- importorg.slf4j.LoggerFactory;
- importorg.spring.mvc.HelloWorldController;
- importorg.springframework.stereotype.Controller;
- importorg.springframework.web.bind.annotation.RequestMapping;
- importorg.springframework.web.bind.annotation.RequestMethod;
- importorg.springframework.web.bind.annotation.RequestParam;
- importorg.springframework.web.multipart.MultipartFile;
- importorg.springframework.web.multipart.MultipartHttpServletRequest;
- /**
- *上传文件
- *@authorchenyw
- *
- */
- @Controller
- @RequestMapping(value="/toFileUpload")
- publicclassFileUploadController{
- privateLoggerlogger=LoggerFactory.getLogger(HelloWorldController.class);
- /**
- *单文件上传
- *@paramname@RequestParam取得name字段的值
- *@paramfile文件
- *@return
- *@throwsIOException
- */
- @RequestMapping(value="/oneFileUpload",method=RequestMethod.POST)
- publicStringhandleFormUpload(@RequestParam("name")
- Stringname,@RequestParam("file")
- MultipartFilefile)throwsIOException{
- logger.info("name:"+name);
- logger.info("上传文件:"+file.getOriginalFilename());
- if(!file.isEmpty()){
- this.copyFile(file.getInputStream(),file.getOriginalFilename());
- }
- return"fileUpload/success";
- }
- /**
- *多文件上传
- *@paramrequest
- *@paramname
- *@return
- *@throwsException
- */
- @RequestMapping(value="/multipartFileUpload",method=RequestMethod.POST)
- publicStringupload2(
- MultipartHttpServletRequestrequest,
- @RequestParam("name")Stringname//页面上的控件值
- )throwsException{
- List<MultipartFile>files=request.getFiles("file");
- for(inti=0;i<files.size();i++){
- if(!files.get(i).isEmpty()){
- logger.info("上传文件:"+files.get(i).getOriginalFilename());
- this.copyFile(files.get(i).getInputStream(),files.get(i).getOriginalFilename());
- }
- }
- logger.info("success");
- return"fileUpload/success";
- }
- /**
- *写文件到本地
- *@paramin
- *@paramfileName
- *@throwsIOException
- */
- privatevoidcopyFile(InputStreamin,StringfileName)throwsIOException{
- FileOutputStreamfs=newFileOutputStream("d:/upload/"
- +fileName);
- byte[]buffer=newbyte[1024*1024];
- intbytesum=0;
- intbyteread=0;
- while((byteread=in.read(buffer))!=-1){
- bytesum+=byteread;
- fs.write(buffer,0,byteread);
- fs.flush();
- }
- fs.close();
- in.close();
- }
- }
单文件上传页面oneFileUpload.jsp
- <%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
- <%
- Stringpath=request.getContextPath();
- StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <basehref="<%=basePath%>">
- <title>MyJSP'oneFileUpload.jsp'startingpage</title>
- <metahttp-equiv="pragma"content="no-cache">
- <metahttp-equiv="cache-control"content="no-cache">
- <metahttp-equiv="expires"content="0">
- <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
- <metahttp-equiv="description"content="Thisismypage">
- <!--
- <linkrel="stylesheet"type="text/css"href="styles.css">
- -->
- </head>
- <body>
- ThisismyonefileUploadpage.<br>
- <formmethod="POST"action="toFileUpload/oneFileUpload"enctype="multipart/form-data">
- <inputtype="text"name="name"/>
- <inputtype="file"name="file"/>
- <inputtype="submit"/>
- </form>
- </body>
- </html>
多文件上传页面multipartFileUpload.jsp
- <%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
- <%
- Stringpath=request.getContextPath();
- StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <basehref="<%=basePath%>">
- <title>MyJSP'multipartFileUpload.jsp'startingpage</title>
- <metahttp-equiv="pragma"content="no-cache">
- <metahttp-equiv="cache-control"content="no-cache">
- <metahttp-equiv="expires"content="0">
- <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
- <metahttp-equiv="description"content="Thisismypage">
- <!--
- <linkrel="stylesheet"type="text/css"href="styles.css">
- -->
- </head>
- <body>
- ThisismultipartFileUploadpage.<br>
- <formmethod="POST"action="toFileUpload/multipartFileUpload"enctype="multipart/form-data">
- <inputtype="text"name="name"/><br>
- <inputtype="file"name="file"/><br>
- <inputtype="file"name="file"/><br>
- <inputtype="submit"/><br>
- </form>
- </body>
- </html>