//文件类型判断
public class FileTypeInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)throws Exception {
// 判断是否为文件上传请求
if (request instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> files = multipartRequest.getFileMap();
Iterator<String> iterator = files.keySet().iterator();
//对多部件请求资源进行遍历
while (iterator.hasNext()) {
String formKey = (String) iterator.next();
MultipartFile multipartFile = multipartRequest.getFile(formKey);
String filename=multipartFile.getOriginalFilename();
//判断是否为限制文件类型
if (checkFile(filename)) {
return true;
}
}
}
request.getRequestDispatcher("typeErro.do").forward(request, response);
return false;
}
/**
* 判断是否为允许的上传文件类型,true表示允许
*/
private boolean checkFile(String fileName) {
//设置允许上传文件类型
String suffixList = "jpg,png,ico,bmp,jpeg";
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
if (suffixList.contains(suffix.trim().toLowerCase())) {
return true;
}
return false;
}
}
//文件大小
public class FileUploadInterceptor extends HandlerInterceptorAdapter {
private long maxSize;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判断是否文件上传
if(request!=null && ServletFileUpload.isMultipartContent(request)) {
ServletRequestContext ctx = new ServletRequestContext(request);
//获取上传文件尺寸大小
long requestSize = ctx.contentLength();
if (requestSize > maxSize) {
//当上传文件大小超过指定大小限制后,模拟抛出MaxUploadSizeExceededException异常
throw new MaxUploadSizeExceededException(maxSize);
}
}
return true;
}
public void setMaxSize(long maxSize) {
this.maxSize = maxSize;
}
}
springMVC拦截器配置
<!--拦截器 -->
<mvc:interceptors>
<!-- 文件上传大小拦截 -->
<mvc:interceptor>
<mvc:mapping path="/studentIden/studentInfo.do" />
<bean class="com.minihourse.interceptor.FileUploadInterceptor">
<property name="maxSize" value="10485760"/>
</bean>
</mvc:interceptor>
<!-- 文件类型拦截 -->
<mvc:interceptor>
<mvc:mapping path="/studentIden/studentInfo.do" />
<bean class="com.minihourse.interceptor.FileTypeInterceptor" />
</mvc:interceptor>
</mvc:interceptors>