`commons-fileupload` 是 Apache 提供的经典 Java Web 文件上传组件,**依赖 commons-io** 提供IO工具方法

发布时间:2026/9/24 0:53:15
`commons-fileupload` 是 Apache 提供的经典 Java Web 文件上传组件,**依赖 commons-io** 提供IO工具方法 commons-fileupload是 Apache 提供的经典 Java Web 文件上传组件依赖 commons-io提供IO工具方法二者配套使用用于 Servlet 传统项目实现multipart/form-data方式文件上传。适用场景原生Servlet、SSM老项目SpringMVC出现之前主流上传方案SpringMVC底层早期也是封装该组件CommonsFileUploadSupport二、Maven依赖!-- 文件上传核心包 --dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.5/version/dependency!-- IO工具依赖fileupload必须依赖它 --dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.16.1/version/dependency三、核心APIServletFileUpload上传解析入口DiskFileItemFactory文件工厂配置临时文件、内存阈值FileItem封装表单字段普通参数/上传文件isFormField()判断是否普通文本参数getName()获取上传文件名getInputStream()获取文件流write(File dest)保存文件四、最简代码示例原生Servlet// 1. 创建工厂DiskFileItemFactoryfactorynewDiskFileItemFactory();// 设置内存临界值超过该大小写入临时磁盘factory.setSizeThreshold(1024*1024);// 指定临时目录factory.setRepository(newFile(D:/temp));// 2. 创建上传解析器ServletFileUploaduploadnewServletFileUpload(factory);// 限制单个文件最大、总上传大小upload.setFileSizeMax(10*1024*1024);upload.setSizeMax(50*1024*1024);try{// 解析请求得到所有表单项ListFileItemitemListupload.parseRequest(request);for(FileItemitem:itemList){if(!item.isFormField()){// 文件StringfileNameitem.getName();item.write(newFile(D:/upload/fileName));}else{// 普通表单参数Stringnameitem.getFieldName();Stringvalueitem.getString(UTF-8);}}}catch(Exceptione){e.printStackTrace();}五、重要注意事项请求头要求前端表单必须enctypemultipart/form-data否则组件无法解析。formmethodpostenctypemultipart/form-datainputtypefilenamefile/form编码问题解析普通参数时建议指定编码item.getString(UTF-8)防止中文乱码。和SpringMVC关系SpringMVC 提供CommonsMultipartResolver内部就是封装这套APISpringBoot 2.x 默认使用StandardServletMultipartResolverServlet3.0内置上传不需要这两个包新项目不推荐引入 commons-fileupload。优缺点✅ 兼容老旧Servlet容器、灵活可控❌ 需要手动处理临时文件清理Servlet3.0之后有原生方案可替代不再是首选方案六、版本提醒commons-fileupload 1.4 最低要求Java 8不要混用高低版本 commons-io容易出现NoSuchMethodError如果你需要我可以补充SpringMVC整合 CommonsFileUpload 配置上传文件名去重、类型校验、异常捕获完整工具类和 Servlet3.0 原生上传方案对比

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询