文件上传拦截器

原创 2018年04月16日 17:15:51

1.在spring-servlet.xml中配置拦截器:由于本系统框架比较旧(spring2.4版本的,spring 3.0以上的才支持mvc标签)--项目中使用并通过了安全扫描

<bean id="handlerInterceptor1" class="com.sunrise.grid.common.actions.FileShellInterceptor"/>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  
    <property name="interceptors">  
        <list>  
          
            <ref bean="handlerInterceptor1"/>
       </list>  
    </property>  

</bean> 


2.具体的拦截器实现类代码如下:

package com.sunrise.grid.common.actions;




import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.slf4j.Logger;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;


import com.itextpdf.text.pdf.codec.Base64.InputStream;
import com.sunrise.bdc.commons.log.LoggingHelper;
public class FileShellInterceptor  extends  HandlerInterceptorAdapter{


Logger log = LoggingHelper.getLog("FileShellInterceptor.class");
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)  throws Exception{
    boolean flag= true;
    log.info("进入了文件上传拦截器!!!");
    System.out.println("进入了文件上传拦截器=-=-=-=-=-=-=-=-=-=------------=--");
    // 判断是否为文件上传请求
    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)) {
            log.info("存在非法参数不能放行!请核对上传文件格式,重新刷新页面再次上传!");
                flag = false;
             
            }
        }
    }
 
    return flag;
}





    @Override
public void postHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler,
        ModelAndView modelAndView) throws Exception {
    System.out.println("Post-handle");
}
    @Override
public void afterCompletion(HttpServletRequest request,
        HttpServletResponse response, Object handler, Exception ex)
        throws Exception {
    System.out.println("After completion handle");
}
/**
* 判断是否为允许的上传文件类型,true表示允许
*/
private boolean checkFile(String fileName) {
    //设置允许上传文件类型
    String suffixList = "jpg,gif,png,ico,bmp,jpeg,zip,zp,rar,doc,docx,excel,xls,xlxs";
    // 获取文件后缀
    String suffix = fileName.substring(fileName.lastIndexOf(".")
            + 1, fileName.length());
    if (suffixList.contains(suffix.trim().toLowerCase())) {
    System.out.println("无非法参数可以放行!!!");
    log.info("无非法参数可以放行!!!");
        return true; 
    }
    log.info("存在非法参数不能放行!请核对上传文件格式,重新刷新页面再次上传!");
    return false;
}


}

用文件上传了解struts2拦截器的使用

struts2中,拦截器是非常核心的内容,框架默认提供的拦截器,我们可以从struts2-core-**.jar/struts-default.xml中查询到,我们以struts2-core-2.3....
  • Minhellic
  • Minhellic
  • 2016-07-04 18:28:19
  • 563

springmvc文件上传和拦截器

学习笔记_springmvc文件上传和拦截器
  • Jerome_s
  • Jerome_s
  • 2014-06-04 12:14:01
  • 3120

struts2实现文件上传(类型、大小过滤——手动、拦截器)

struts2实现文件上传 1、首先需要引入上传文件所需的jar包,下面是对应的maven坐标。 commons-fileupload commons-fileupload ...
  • wild46cat
  • wild46cat
  • 2016-06-17 17:47:31
  • 2147

Struts2上传文件拦截器实现文件上传

Struts2预置了大量的拦截器,见struts-default.xml第122行。 有一部分拦截器是Struts2框架自身用到的,必须引用,这些拦截器打包在basicStack中,我们项目中引...
  • xlinsist
  • xlinsist
  • 2014-12-11 13:34:58
  • 792

struts2基于注解且使用拦截器的文件上传配置

@Action(value = "uploadBrand",    interceptorRefs={@InterceptorRef(value="fileUpload",     params=...
  • dream_1086
  • dream_1086
  • 2014-10-26 19:15:39
  • 1157

struts2拦截器、文件的上传和下载

五、拦截器 1、概述 Struts2的很多核心功能都是由拦截器完成的。 拦截器很好的实现了AOP的编程思想,在动作的执行之前和结果的返回之后,做拦截处理。 2、struts2的默认拦截器栈 ...
  • u014798557
  • u014798557
  • 2014-09-16 00:18:43
  • 1108

java文件上传实例

  • 2010年11月26日 19:34
  • 136KB
  • 下载

【ssh】struts文件上传拦截器(单,多文件上传,以及错误信息的返回)

单文件上传 1. 通过HTML表单上传文件时, 需要将表单的enctype属性设置为multipart/form-data, method属性设置为post.  jsp页面代码: Html代码  ...
  • yjqyyjw
  • yjqyyjw
  • 2015-09-09 17:00:36
  • 594

Struts2 文件上传fileUpload拦截器不起作用

刚在实用了struts2.0的上传,发现其上传成功,但发现虽然配置了struts自己的拦截器,却不能限制类别、大小等。上网查了一下,有如下问题: 1.没配置input,因为错误信息会返回inpu...
  • zxk15982106569
  • zxk15982106569
  • 2013-06-24 23:40:52
  • 1234

SpringMvc文件上传、下载和拦截器

SpringMvc文件上传、下载和拦截器
  • u012323351
  • u012323351
  • 2017-03-05 11:31:28
  • 1708
收藏助手
不良信息举报
您举报文章:文件上传拦截器
举报原因:
原因补充:

(最多只允许输入30个字)