文件上传
文件的上传需要使用post请求,且enctype
需为multipart/form-data
(分段数据)
<form th:action="@{/testUp}" method="post" enctype="multipart/form-data">
</form>
@RequestMapping("/testUp")
public String testUp(MultipartFile phone) {
System.out.println(phone.getName());
System.out.println(phone.getOriginalFilename());
return "success";
}
<!--需要在SpringMVC配置文件中配置文件上传解析器-->
<!--注意:id必须叫multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
上传
@RequestMapping("/testUp")
public String testUp(MultipartFile phone,HttpSession session) throws IOException {
//通过session创建servletContext对象
ServletContext servletContext = session.getServletContext();
// 通过servletContext对象获取photo的真实路径
String realPath = servletContext.getRealPath("/photo");
// 判断路径是否存在,如果不存在则创建相对应的路径。
File file = new File(realPath);
if(!file.exists()){
file.mkdir();
}
// 获取文件名
String name = phone.getOriginalFilename();
// 拼接路径
String path=realPath+File.separator+name;
// 上传
phone.transferTo(new File(path));
return "success";
}
// 获取文件名
String filename = phone.getOriginalFilename();
// 解决重名问题,使用UUID作为文件名
// 获取文件的后缀
String suffixName = filename.substring(filename.lastIndexOf("."));
// 将UUID转换为String类型
String uuid = UUID.randomUUID().toString();
// 获取新的文件名
String realFileName=uuid+suffixName;
拦截器
-
创建一个类去实现
HandlerInterceptor
,并重写三个方法。public class TestInterceptor implements HandlerInterceptor{}
-
SpringMVC
的在配置文件中注册拦截器<!-- 配置拦截器--> <mvc:interceptors> <bean class="com.boerk.mvc.interceptor.TestInterceptor"></bean> </mvc:interceptors> <!-- 或者--> <mvc:interceptors> <ref bean="testInterceptor"></ref> </mvc:interceptors>
-
也可以使用拦截器拦截指定的路径
<mvc:interceptor> <!--拦截所有请求--> <mvc:mapping path="/**"/> <!--排除前往主页的请求--> <mvc:exclude-mapping path="/"/> <ref bean="testInterceptor"></ref> </mvc:interceptor>