今天说下SpringMVC的上传
首先要导入应该有依赖(或者jar包)
在maven中导入的依赖则看上去简易很多
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.16.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
导入jar包或者依赖后,就可以开始写个上传的表单了
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
</form>
注意 这里的请求方法必须是post请求
也必须写上enctype=“multipart/form-data”,这表示上传的将会是二进制流的格式,以规定的二进制进行上传
只有设置成这个上传格式,才能上传成功
然后需要写个springmvc的配置文件
<!-- 开启扫描 -->
<context:component-scan base-package="com.liy.controller" />
<!-- 开启mvc注解 -->
<mvc:annotation-driven />
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
id="multipartResolver" >
<!-- 设置上传文件信息参数 -->
<!-- 设置文件上传的最大尺寸 -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
<!-- 配置文件的允许访问静态资源 -->
<mvc:resources location="/**" mapping="/" />
这里CommonsMultipartResolver 类的id必须为“multipartResolver“
这个bean的id是固定的,当DispatcherServlet查找multipart解析器时,会查找id为multipartResolver的Bean。若定义的bean 的id 不是multipartResolver,DispatcherServlet会对它进行忽略。
@SuppressWarnings("serial")
public class DispatcherServlet extends FrameworkServlet {
/** Well-known name for the MultipartResolver object in the bean factory for this namespace. */
public static final String MULTIPART_RESOLVER_BEAN_NAME = "multipartResolver";
controller在接收处理下
@RequestMapping("/upload")
@ResponseBody
public void upload(String name,String address,MultipartFile file) throws IllegalStateException, IOException{
System.out.println(name+"--"+address+"--"+file.getOriginalFilename());
file.transferTo(new File("d:/img/imgs/"+file.getOriginalFilename()));
}
这里的MultiparFile参数的名字必须和
<input type="file" name="file" />
这里的name一致才行