MVC文件上传
1. 导入相关依赖
<!--文件上传依赖包-->
<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.4</version>
</dependency>
2. 准备上传页面
<h3>SpringMVC文件上传</h3>
<form action="/file/mvc/upload" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br/>
<input type="submit" value="上传文件"/>
</form>
3. 配置文件解析器
在Spring.xml (核心配置文件) 进行配置
<!-- 配置文件解析器对象,要求id名称必须是multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"/>
<property name="defaultEncoding" value="UTF-8" />
</bean>
4. 类中代码实现
@RequestMapping(value = "/mvc/upload")
public String upload(MultipartFile upload, HttpSession session) throws Exception{
//1.文件上传路径->项目中uploads目录 获取指定目录的真实路径
String path = session.getServletContext().getRealPath("/uploads");
//获取上传的文件名字 1.jpg
String fileName = upload.getOriginalFilename();
//获取后缀 jpg
String extName = StringUtils.getFilenameExtension(fileName);
//UUID新名字
String newFileName = UUID.randomUUID().toString();
//文件上传 MultipartFile.transferTo(new File())
upload.transferTo(new File(path,newFileName+"."+extName));
//upload.transferTo(new File("D:/1.jpg"));
return "success";
}
说明 :
- 方法参数中 ,
MultipartFile
的对象名 , 要与表单中上传文件
的name一致!!! - 用idea编写该功能时 , 需要在
src - webapp
中创建名字相同的文件夹 , 即uploads
, 为保证该文件夹可以顺利编译成功 , 需要在该文件夹中创建一个任意文件 , 如1.text
- 上传的图片保存在
target - 项目名称 - uploads
中