public class FileUploadManager {/** 允许上传的扩展名*/  public static String [] extensionPermit = {"txt", "xls", "zip"}; public FileUploadManager(User user, HttpServletRequest request) throws Exception {super();session = request.getSession();DiskFileItemFactory factory = new DiskFileItemFactory();upload = new ServletFileUpload(factory);SystemManager systemManager = ComponentFactory.getSystemManager();int docSize = Integer.parseInt(systemManager.getSystemConfig(user.getCompanyID(), "DOCUMENT_SIZE_LIMIT").getValue());int maxFileSize = 1024 * 1024 * docSize;upload.setFileSizeMax(maxFileSize); // 设置单个文件的最大上传大小upload.setSizeMax(maxFileSize + 500); // 设置整个request的最大大小upload.setProgressListener(new FileUploadListener(request));extensionPermit = systemManager.getSystemConfig(user.getCompanyID(), "DOCUMENT_EXT_LIMIT").getValue().split(",");//设置文件类型files = upload.parseRequest(request);}class QCServletFileUpload extends ServletFileUpload {private Map textHash = new HashMap();//表单数据private int fileItemCount = 0;// 重载parseRequest方法public List parseRequest(HttpServletRequest request) throws FileUploadException {List items = new ArrayList();//文件try {FileItemIterator iter = getItemIterator(request);FileItemFactory fac = getFileItemFactory();while (iter.hasNext()) {FileItemStream item = iter.next();FileItem fileItem = fac.createItem(item.getFieldName(), item.getContentType(), item.isFormField(), item.getName());Streams.copy(item.openStream(), fileItem.getOutputStream(), true);//fileItem.getOutputStream().close();if (fileItem.isFormField()) { // 处理form field
                    textHash.put(fileItem.getFieldName(), fileItem);} else if (fileItem.getName() != null && fileItem.getName().length() > 0) {// 处理file fieldString fileExtension = FilenameUtils.getExtension(fileItem.getName());if(!ArrayUtils.contains(FileUploadManager.extensionPermit, fileExtension)){fileItemCount++;items.add(fileItem);}else{throw new FileUploadException("文件" + fileItem.getName() + "类型不支持.");}}}} catch (Exception e) {e.printStackTrace();throw new FileUploadException(e.getMessage(), e);}return items;}}

转载于:https://www.cnblogs.com/firstdream/p/7376333.html

文件上传限制文件类型相关推荐

  1. 文件上传 文件大小和类型

    文件上传 文件大小和类型 一.文件上传 二.文件大小和类型

  2. java文件上传_Java文件上传细讲

    什么是文件上传? 文件上传就是把用户的信息保存起来. 为什么需要文件上传? 在用户注册的时候,可能需要用户提交照片.那么这张照片就应该要进行保存. 上传组件(工具) 为什么我们要使用上传工具? 为啥我 ...

  3. httpclient base64 文件上传_文件上传下载

    说道文件上传下载,这个业务需求并不是很复杂思想如下 1.将文件上传到 某台服务器上的指定的路径下也可以这样理解 文件上传就是将本地图片发送到别的地方,下载就是将别的地方的图片放在本地 2.将路径同文件 ...

  4. 通达OA未授权任意文件上传及文件包含漏洞分析学习

    今年3月份通达OA爆出了文件上传和文件包含漏洞,网络上很多复现和分析的博客,今天我也来试着分析分析,据360灵腾安全实验室判断该漏洞等级为高,利用难度低,威胁程度高,所以可能比较适合代码审计的新手来练 ...

  5. 渗透测试 ( 0 ) --- XSS、CSRF、文件上传、文件包含、反序列化漏洞

    漏洞数据库:https://www.exploit-db.com/google-hacking-database 1.渗透测试 实用 浏览器插件 chrome.edge 插件:搜索 cookie,安装 ...

  6. 代码审计:YCCMS 代码执行 文件上传 任意文件删除

    代码审计:YCCMS 代码执行 文件上传 任意文件删除 YCCMS 审计准备 代码审计 代码执行漏洞 文件上传漏洞 任意文件删除漏洞 YCCMS YCCMS是一款PHP版轻量级CMS建站系统,程序页面 ...

  7. Dropzone单文件上传、多文件上传、文件夹上传,springmvc接收,上传至Minio的一系列问题

    0 前言 1.项目需要上传文件和大量的文件夹,页面只有一个input file标签会很丑,偶然间得知dropzone类库, 决定使用. 2. 项目后端采用springmvc接收,调用minio代码上传 ...

  8. 踩坑 - click事件与blur事件冲突问题 input文件上传同名文件问题

    前言 上周写需求遇到了一点小坑涉及到一些小细节,今天赶上没啥事总结一下分享出来. click事件与blur事件冲突问题 click事件与blur事件 blur事件: 表单事件,元素失去焦点时候触发,不 ...

  9. 文件上传漏洞_通达OA前台任意文件上传漏洞+文件包含漏洞导致getshell

    点击蓝字|关注我们 通达OA前台任意文件上传漏洞 +文件包含漏洞导致getshell 一.漏洞介绍/Profile/ 通达OA介绍: 通达OA(Office Anywhere网络智能办公系统)是由北京 ...

  10. 文件上传、文件包含和目路遍历杂谈

    一.说明 文件上传.文件包含和目路遍历是<黑客防线>盛行的时代常谈的getshell手法,但到现在的安全书藉感觉就比较少提及或一笔带过.在谈的年代看不懂,在看得懂的年代又不谈了,概念感觉总 ...

最新文章

  1. 行业变革的镜子:2018年融资最多的24家美国创业公司
  2. Python基础10 反过头来看看
  3. Linux Swap分区设定
  4. 工作152:阅读之后台管理登录样式
  5. 6、Flutter Error waiting for a debug connection: ProcessException: adb did not report f(转)
  6. unity collider rigidbody zz
  7. 收录网zblog主题导航模板
  8. 建筑设计 - 概念设计 - 笔记:- 第一章
  9. 九个PHP很有用的功能
  10. (48)FPGA三态多驱动(tri型)
  11. python创建虚拟环境报错typeerror_python 创建虚拟环境时报错OSError, setuptools下载失败...
  12. 判断二叉树是否对称的代码
  13. java学习笔记(五)集合
  14. 多个html合并一个PDF,如何将多个网页合并成一个PDF文件
  15. 桐桐的新闻系统【模拟】
  16. 我的职业生涯(五) 告别六天工作制
  17. 《领导沟通艺术与真实影响力》感想二
  18. [maya] 粒子系统之物体消散效果
  19. Windows系统增强优化工具
  20. 设计模式——备忘录模式

热门文章

  1. ElasticDL:首个基于 TensorFlow 实现弹性深度学习的开源系统
  2. git解决冲突 删除本地_Git冲突:git pull时和本地改动冲突
  3. react map循环生成的button_常见 React 面试题
  4. python矩阵行数_python查看矩阵的行列号以及维数方式
  5. 卸载idea2020删除以前的配置_推荐一款只有5M大小的绿色良心的卸载工具!
  6. php代码怎么看错在哪里,PHP代码不知道哪里错了。
  7. linux找回删除的文件6,在Centos6/RHEL6上恢复ext4文件系统下误删除的文件
  8. android.mk local_cppflags,android.mk中LOCAL_CFLAGS 介绍
  9. sql查询去除视图重复项_如何使用SQL查询视图,Postico使用技巧分享
  10. win7查看隐藏文件_Win8系统查看隐藏文件的操作方法是什么?