SpringMVC文件上传拦截器,大小验证,类型验证

来源:互联网 发布:nike手机抢购软件 编辑:程序博客网 时间:2024/06/07 04:11
//文件类型判断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>       
原创粉丝点击