0a99efa91bf8d85a2c311deff1d902a2c4ca4e8c.svn-base 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package cn.com.goldenwater.dcproj.intercepter;
  2. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  3. import cn.com.goldenwater.dcproj.utils.RequestUtils;
  4. import cn.com.goldenwater.dcproj.utils.ReturnUtils;
  5. import org.apache.commons.lang3.StringUtils;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.context.request.NativeWebRequest;
  9. import org.springframework.web.context.request.RequestAttributes;
  10. import org.springframework.web.context.request.ServletWebRequest;
  11. import org.springframework.web.multipart.MultipartFile;
  12. import org.springframework.web.multipart.MultipartHttpServletRequest;
  13. import org.springframework.web.servlet.HandlerInterceptor;
  14. import org.springframework.web.servlet.HandlerMapping;
  15. import org.springframework.web.servlet.ModelAndView;
  16. import org.springframework.web.servlet.View;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.io.PrintWriter;
  20. import java.util.Iterator;
  21. import java.util.Map;
  22. @Component
  23. public class FileCheckInterceptor implements HandlerInterceptor {
  24. @Value("${notFileAllow}")
  25. private String notFileAllow;
  26. @Override
  27. public boolean preHandle(HttpServletRequest request,
  28. HttpServletResponse response, Object handler) throws Exception {
  29. /* NativeWebRequest webRequest = new ServletWebRequest(request);
  30. Map<String, String> map = (Map<String, String>) webRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST);
  31. if(map!=null && !map.isEmpty()){
  32. for(String key:map.keySet()){
  33. String value=map.get(key);
  34. String content=RequestUtils.cleanScript(value);
  35. if(content.contains("error-333:")){
  36. ReturnUtils.responseFail(response,"参数存在异常,请仔细检查",5555);
  37. return false;
  38. }
  39. }
  40. }*/
  41. // 判断是否为文件上传请求
  42. if (request != null && request instanceof MultipartHttpServletRequest) {
  43. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  44. Map<String, MultipartFile> files = multipartRequest.getFileMap();
  45. Iterator<String> iterator = files.keySet().iterator();
  46. if (StringUtils.isBlank(notFileAllow)) {
  47. //无约束
  48. return true;
  49. }
  50. String[] notArrays = notFileAllow.split(SplitValue.FENHAO_SPLIT);
  51. if (notArrays.length == 0) {
  52. //无约束
  53. return true;
  54. }
  55. String filename = "";
  56. MultipartFile multipartFile = null;
  57. while (iterator.hasNext()) {
  58. String formKey = (String) iterator.next();
  59. multipartFile = multipartRequest.getFile(formKey);
  60. filename = multipartFile.getOriginalFilename();
  61. int lastIndexOf = filename.lastIndexOf(".");
  62. filename = filename.substring(lastIndexOf);
  63. boolean isFound = false;
  64. for (String str : notArrays) {
  65. if (StringUtils.isBlank(str)) {
  66. continue;
  67. }
  68. if (filename.equals(str) || filename.trim().equals(str)) {
  69. isFound = true;
  70. break;
  71. }
  72. }
  73. if (isFound) {
  74. response.setCharacterEncoding("UTF-8");
  75. response.setContentType("application/json;charset=utf-8");
  76. PrintWriter printWriter = response.getWriter();
  77. printWriter.write("上传文件有异常,已被系统禁止!");
  78. return false;
  79. }
  80. multipartFile = null;
  81. }
  82. }
  83. return true;
  84. }
  85. @Override
  86. public void postHandle(HttpServletRequest request,
  87. HttpServletResponse response, Object handler,
  88. ModelAndView modelAndView) throws Exception {
  89. // TODO Auto-generated method stub
  90. }
  91. @Override
  92. public void afterCompletion(HttpServletRequest request,
  93. HttpServletResponse response, Object handler, Exception ex)
  94. throws Exception {
  95. // TODO Auto-generated method stub
  96. }
  97. }