SpringMVC实现文件上传
SpringMVC提供了帮我们解析文件的类和组件,使得我们能更便捷的开发。
首先,我们需要配置一个文件解析器:
<!--注意,这里的id是固定写法-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--这里可以指定上传文件最大为多少,以字节为单位-->
<property name="maxUploadSize" value="10*1024*1024" />
</bean>
from表单也跟传统的不一样:
<!--enctype="multipart/form-data"是固定的-->
<form action="/user/fileupload2" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload" /><br/>
<input type="submit" value="上传" />
</form>
java代码:
@RequestMapping("/fileupload2")
//需要一个MultipartFile对象,名称必须跟表单里的name一样,都是upload
public String fileuoload2(HttpServletRequest request, MultipartFile upload) throws Exception {
// 指定上传的位置
String path = request.getSession().getServletContext().getRealPath("/upload/");
// 判断,该路径是否存在
File file = new File(path);
if(!file.exists()){
// 创建该文件夹
file.mkdirs();
}
// 获取上传文件的名称
String filename = upload.getOriginalFilename();
// 把文件的名称设置唯一值,uuid
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid+"_"+filename;
// 将文件上传
upload.transferTo(new File(path,filename));
return "success";
}
需要导入的jar包:
<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>