尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
`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 原生上传方案对比
RELATED

相关推荐

Flutter+OpenHarmony手语学习App开发实战

Flutter+OpenHarmony手语学习App开发实战

1. 项目概述:FlutterOpenHarmony手语学习App开发实战 这个项目采用Flutter框架在OpenHarmony系统上开发一款手语学习应用,核心功能包括手语视频教学、课程推荐系统和学习进度跟踪。作为一名同时接触过Flutter和OpenHarmony开发的工程师,我发现…

📅 2026/9/17 23:12:42
PTA基础编程题目集 7-7 12-24小时制(C++语言实现)

PTA基础编程题目集 7-7 12-24小时制(C++语言实现)

摘要:本文是PTA编程题"12-24小时制"的题解,涵盖题目描述、输入输出格式及C语言实现,展示24小时制时间到12小时制时间的转换逻辑与带分隔符的输入处理方法。题目描述 编写一个程序,要求用户输入24小时制的时间&#xff0…

📅 2026/9/10 6:28:01
PTA基础编程题目集 7-6混合类型数据格式化输入(C++语言实现)

PTA基础编程题目集 7-6混合类型数据格式化输入(C++语言实现)

摘要:本文是PTA编程题"混合类型数据格式化输入"的题解,涵盖题目描述、输入输出格式及C语言实现,展示混合类型数据的顺序读入与格式化输出方法。题目描述 本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2&#x…

📅 2026/9/8 0:21:57
MORE NEWS

更多资讯

📰

x86电脑如何编译ARM程序?揭秘交叉编译核心原理

1. 这个问题背后藏着一个被严重低估的工程常识 “为什么x86电脑能编译ARM程序?”——这句话在刚接触嵌入式、物联网或跨平台开发的新手嘴里,几乎和“为什么手机能打电话”一样自然。但真正把它问出口的人,往往已经卡在了第一个交叉编译命令上…

📰

STM32粮仓安防监测系统:环境+安防双模工业级开源方案

1. 项目概述:一个真正能落地的粮仓安防监测系统长什么样?“STM32项目开源:粮仓环境安防监测系统(代码 原理图 仿真)”——这个标题里藏着三个关键信息:应用场景明确(粮仓)、功能定…

📰

mac进入指定文件夹全攻略:Finder与终端高效操作指南

1. 从 Finder 到终端:先理清 mac 的路径逻辑在 mac 上“进入指定文件夹”,听起来是最基础不过的操作,但实际用下来你会发现,它远不止双击一下文件夹那么简单。很多从 Windows 转过来的用户,第一周最不适应的就是 mac 的…

📰

OpenCV笔迹识别系统设计:从图像预处理到特征提取匹配的完整实践

简介:这是一套基于OpenCV图像识别的笔迹识别系统完整交付包,适合计算机视觉方向的学生、开发者及需要完成课程设计或毕业设计的人群,用于快速搭建笔迹比对与识别功能。压缩包内含27个文件,涵盖main.py与distinguish.py等Python源码…

📰

Mac下进入指定文件夹全攻略:从Finder到终端效率技巧

刚用上 Mac 那会儿,“进入指定文件夹”这事儿真的让我难受了好一阵。访达里鼠标一层层点,明明知道路径却半天找不到入口;切到终端,输个cd还总是报错。后来把 macOS 这套图形界面和 Unix 目录结构都摸清楚之后,才发现这…

📰

SSM框架+Vue汽车租赁系统实战:从数据库设计到前后端联调

拿到这个题目的时候我就觉得挺有意思,汽车租赁系统在毕业设计和课程设计里出场率一直很高,但能坚持用SSM框架做底子、再用Vue做前端交互的,反而比现在清一色Spring Boot脚手架多了一些“把原理搞清楚”的价值。这套SSM296汽车租赁系统vue&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬