Struts2实现多文件上传功能
发布时间 - 2026-01-11 02:56:13 点击率:次前台form 表单:设置method=post,enctype=multipart/form-data。

struts2在原有的上传解析器继承上做了进一步封装,更进一步简化了文件上传。
Action需要使用3个属性来封装该文件域的信息:
(1)类型为File的*属性封装了该文件域对应的文件内容;
(2)类型为String的***FileName属性封装了该文件域对应的文件的文件类型;
(3)类型为String的***ContentType属性封装了该文件域对应的文件的类型。
具体实现:
新建web项目
添加struts2相关包
myeclipse可直接下载,右击项目,如下。
前台
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<body>
<form action="upload.action" method="post" enctype="multipart/form-data">
<input type="file" name="upload" multiple="multiple"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>UploadFile</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>
配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<constant name="struts.multipart.saveDir" value="/tmp"/>
<constant name="struts.custom.i18n.resources" value="app"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="upload" class="com.yf.action.UploadAction">
<result>/index.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
后台代码
public class UploadAction extends ActionSupport{
private List<File> upload;
private List<String> uploadContentType;
private List<String> uploadFileName;
public List<File> getUpload() {
return upload;
}
public void setUpload(List<File> upload) {
this.upload = upload;
}
public List<String> getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(List<String> uploadContentType) {
this.uploadContentType = uploadContentType;
}
public List<String> getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(List<String> uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
//文件保存路径
String path = ServletActionContext.getServletContext().getRealPath("/images");
File file = new File(path);
//不存在则创建
if(!file.exists()){
file.mkdir();
}
//循环将文件上传到指定路径
for(int i = 0; i< upload.size(); i++){
FileUtils.copyFile(upload.get(i), new File(file,uploadFileName.get(i)));
}
return SUCCESS;
}
结果如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Struts2多文件上传
# Struts2上传
# Struts2文件上传
# java中struts2实现文件上传下载功能实例解析
# struts2单个文件上传的两种实现方式
# Java以struts2为例介绍如何实现图片上传
# struts2中实现多个文件同时上传代码
# 关于Struts2文件上传与自定义拦截器
# Struts2+jquery.form.js实现图片与文件上传的方法
# JavaWeb中struts2实现文件上传下载功能实例解析
# JavaEE中struts2实现文件上传下载功能实例解析
# java中struts2实现简单的文件上传与下载
# struts2+jsp实现文件上传的方法
# 该文件
# 装了
# 文件上传
# 不存在
# 表单
# 上做
# 大家多多
# 右击
# 上传
# 可直接下载
# 在原有
# 简化了
# multiple
# file
# type
# submit
# version
# xml
# input
# body
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
zabbix利用python脚本发送报警邮件的方法
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Java类加载基本过程详细介绍
Android滚轮选择时间控件使用详解
Python3.6正式版新特性预览
如何在万网ECS上快速搭建专属网站?
Laravel如何创建自定义Facades?(详细步骤)
网站制作软件免费下载安装,有哪些免费下载的软件网站?
javascript基本数据类型及类型检测常用方法小结
python中快速进行多个字符替换的方法小结
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
百度浏览器如何管理插件 百度浏览器插件管理方法
如何基于云服务器快速搭建网站及云盘系统?
如何在新浪SAE免费搭建个人博客?
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Python自动化办公教程_ExcelWordPDF批量处理案例
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
在线制作视频网站免费,都有哪些好的动漫网站?
php结合redis实现高并发下的抢购、秒杀功能的实例
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
,南京靠谱的征婚网站?
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何在万网利用已有域名快速建站?
微信公众帐号开发教程之图文消息全攻略
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel如何生成URL和重定向?(路由助手函数)
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Laravel如何使用withoutEvents方法临时禁用模型事件
手机网站制作与建设方案,手机网站如何建设?
Python文件流缓冲机制_IO性能解析【教程】
郑州企业网站制作公司,郑州招聘网站有哪些?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】

