SpringMVC上传文件原理
- 客户端发送reqeust请求
- 前端控制器接收request,并且通过配置文件解析器解析request
- 解析器返回upload对象,发送给控制器
- 控制器执行方法,传入对象
pom.xml
<!-- 文件上传包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
jsp:
<form action="uploadFile" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br/>
<input type="submit" value="上传"/><br/>
</form>
配置文件:
<!-- 文件解析器对象-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"></property>
</bean>
controller
必须使用@Controller注解
@Controller
public class UploadController {
//springmvc文件上传
@RequestMapping("/uploadFile")
public String fileUpload(HttpServletRequest request, MultipartFile upload) throws Exception{
System.out.println("File Uploading...");
//上传位置
String realPath = request.getSession().getServletContext().getRealPath("/uploads/");
//文件是否存在
File file = new File(realPath);
if (!file.exists()){
file.mkdirs();
}
//获取文件上传名
String filename = upload.getOriginalFilename();
//文件名变为唯一值
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid + "_" + filename;
//上传
upload.transferTo(new File(realPath,filename));
return "success";
}
}