文件上传
必要前提
1、form 表单的 enctype 取值必须是:multipart/form-data(默认值是:application/x-www-form-urlencoded)enctype:是表单请求正文的类型
2、 method 属性取值必须是 Post
3、提供一个文件选择域<input type=”file”/>
原理分析
当 form 表单的 enctype 取值不是默认值后,request.getParameter()将失效。
enctype=”application/x-www-form-urlencoded”时,form 表单的正文内容是:key=value&key=value&key=value;
当 form 表单的 enctype 取值为 Mutilpart/form-data 时,请求正文内容就变成:每一部分都是 MIME 类型描述的正文;
SpringMVC的文件上传
1、构建maven工程添加相关依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2、编写 jsp 页面
<form enctype="multipart/form-data" method="post" action="/file/fileUpload">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
3、编写控制器
@RequestMapping("fileUpload")
public String fileUpload(MultipartFile file){
File dest = new File("C:\\Users\\mwx\\Pictures\\"+file.getOriginalFilename());
//文件上传
try {
file.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
}
return "main";
}
4、配置文件解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
5、测试文件上传的运行结果