同时需要注意的是,上传文件无论什么框架都需要用到"enctype"上传方式必须采用method方式。
上传两个jar包:
com.springsource.org.apache.commons.fileupload
com.springsource.org.apache.commons
web.xml
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- encoding filter for jsp page -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping><!-- 注解扫描包 --> <context:component-scan base-package="com.tgb.web.controller.annotation" /> <!-- 开启注解 --> <mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8" /> <!-- 指定所上传文件的总大小。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="10485760000" /> <property name="maxInMemorySize" value="40960" /> </bean>
<body> <h>添加用户</h> <form name="userForm" action="/springMVC7/file/upload2" method="post" enctype="multipart/form-data" > 选择文件:<input type="file" name="file"> <input type="submit" value="上传" > </form> </body>
@RequestMapping("/upload2")
public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{
//定义一个解释器,解析request,拿到springMVC初始化的上下文,解析上下文
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断request是否为map类型数据
if(multipartResolver.isMultipart(request)){
//转换SpringMVC封装好的文件类型
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//定义迭代器获取文件名称
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//获取文件,MultipartFile定义文件类型
MultipartFile file = multiRequest.getFile((String)iter.next());
if(file != null){
//定义输出文件名称
String fileName = "demoUpload" + file.getOriginalFilename();
//定义输出路径
String path = "D:/" + fileName;
//new 一个文件类型
File localFile = new File(path);
//将上传文件转到本地文件
file.transferTo(localFile);
}
}
}
return "/success";
}
}
原文:http://blog.csdn.net/mingxuanyun/article/details/42301845