成功效果图:                

上篇文章描述了单个文件的上传和配置,下面主要讲解下不同的地方:

index.jsp

 <head>
<script type="text/javascript">
function check(){
var file = document.getElementsByName("file");
var filename = document.getElementsByName("fileName");
var filetype = document.getElementsByName("fileType");
for(var i =;i<file.length;i++){
if(file[i].value !=""){
var f = file[i].value ;
var type = f.substr(f.lastIndexOf(".")).toLowerCase();
var name = f.substr(f.lastIndexOf("\\"));
filename[i].value = name;
filetype[i].value = type;
}else{
alert("请选择文件");
return false;
}
}
return true;
}
</script>
</head> <body>
<p>stuts 多文件上传实例 </p>
${requestScope.typeError}
<form action="/uploadMore.do" method="post" enctype="multipart/form-data" onsubmit="return check();">
上传文件1:<input type="file" name="file" /><br>
<input type="hidden" name="fileType"/><br>
<input type="hidden" name="fileName"/><br>
上传文件2:<input type="file" name="file" /><br>
<input type="hidden" name="fileType"/><br>
<input type="hidden" name="fileName"/><br>
<input type="submit" value="提交"/>
</form>
</body>

struts.xml

 <package name="uploadMoreFile" extends="struts-default">
<!--多文件上传 -->
<action name="uploadMore" class="com.nn.upload.UploadMoreAction" method="uploadMore">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<param name="savePath">/upload</param> <!-- 保存的真实路径 -->
<result name="success">/successMore.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
UploadMoreAction.java
public class UploadMoreAction extends ActionSupport {
private File[] file;
private String[] fileName;
private String[] fileType; public String uploadMore(){
String realpath = ServletActionContext.getServletContext().getRealPath("/upload");
if (this.file.length > ) {
String[] name = this.getFileName();
for(int i =;i<file.length;i++){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
name[i] = df.format(new Date())+name[i].substring(); //获取文件名称,去掉\,并添加时间
File savefile = new File(new File(realpath), name[i]);
if (!savefile.getParentFile().exists())
savefile.getParentFile().mkdirs();
try {
FileUtils.copyFile(file[i], savefile);
} catch (IOException e) {
e.printStackTrace();
}
ActionContext.getContext().put("message", "文件上传成功!");
}
//this.setFileName(name);
}
return "success";
}
}

successMore.jsp

  <body>
${requestScope.message}<br>
<s:iterator value="fileName" status="stuts">
文件名称: <s:property value="fileName[#stuts.index]"/><br>
文件为: <img src="${pageContext.request.contextPath}/<s:property value="'upload/'+fileName[#stuts.index]"/>"><br>
</s:iterator>
<s:debug></s:debug>
</body>
												

struts2的多个文件上传的更多相关文章

  1. Struts2框架下的文件上传文件类型、名称约定

    Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...

  2. Struts2(十五)实现文件上传

    一.导入包 需要将commons-fileupload和commons-io包和struts包一起导入 实现步骤: 在Jsp页面实现客户端选择上传文件 配置Struts.xml,拦截器会自动接收上传的 ...

  3. Struts2学习笔记(十一)——文件上传

    1.单文件上传 单文件上传步骤: 1)创建上传jsp页面 文件上传的表单提交方式必须是POST方式,编码类型:enctype="multipart/form-data",默认是 a ...

  4. Struts2 使用Jquery+ajax 文件上传

    话不多说 直接上代码 前台js: var formData = new FormData(); formData.append("file1",$("#file1&quo ...

  5. Struts2的简单的文件上传

    1文件上传的流程: 第一步:首先得用表单标签的<s:file>在客户端接收上传的文件例如: <%@ page language="java" import=&qu ...

  6. 深入分析JavaWeb Item47 -- Struts2拦截器与文件上传下载

    一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事. 过滤器是Servlet规范中的技术,能够对请求和响应进行过滤. 拦截器是Struts2框架中的技术. ...

  7. struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)

    struts2多文件上传我想只要会用struts2的朋友都不会陌生,但是怎么在action中根据用户上传的文 件把文件路径写到数据库中对应的字段上呢?ps:我的意思是这样,页面上有固定的5个上传文件的 ...

  8. 利用Struts2拦截器完成文件上传功能

    Struts2的图片上传以及页面展示图片 在上次的CRUD基础上加上图片上传功能 (https://www.cnblogs.com/liuwenwu9527/p/11108611.html) 文件上传 ...

  9. struts2中简单的文件上传

    2016-08-31 一.       文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...

  10. [原创]Struts2奇葩环境任意文件上传工具(解决菜刀无法传文件或上传乱码等问题)

    上面这问题问得好  1 不知道大家有没碰到有些Strus2站点  上传JSP后访问404 或者503    注意我说的是404或503不是403(要是403换个css/img等目录或许可以)    但 ...

随机推荐

  1. CentOS Linux 7 提示 lsof: 未找到命令

    我们常使用 lsof -i:端口号 命令来查看某端口是否开放,如使用下面的命令,查看8080端口: lsof -i: 结果: 提示:lsof:未找到命令 解决办法 使用yum来安装lsof,命令如下: ...

  2. Tcl/Tk语言学习------拆分字符串

    字符串的拆分 前言 字符串的处理是每种语言经常会遇到的问题,tcl作为一门脚本语言自然也不例外,关于字符串的拆分,一般会有两种情况:1.使用单个字符拆分,2.使用字符串拆分. 1.使用单个字符拆分字符 ...

  3. 编译keepalived 方法

    作者的环境: redhat 6.5 64 位版 在编译keepalived 前,需要提前给环境安装两个依赖包--zlib和openssl 编译 zlib 库 参考作者之前的博客 http://www. ...

  4. Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你

    很多情况大数据集群需要获取业务数据,用于分析.通常有两种方式: 业务直接或间接写入的方式 业务的关系型数据库同步到大数据集群的方式 第一种可以是在业务中编写代码,将觉得需要发送的数据发送到消息队列,最 ...

  5. vijos次小生成树

    xiaomengxian的哥哥是一个游戏迷,他喜欢研究各种游戏.这天,xiaomengxian到他家玩,他便拿出了自己最近正在研究的一个游戏给xiaomengxian看.这个游戏是这样的:一个国家有N ...

  6. cmd - 命令行窗口中文乱码

    问题 在cmd窗口中输入curl www.baidu.com可以看到有中文乱码的现象,这是因为默认使用的是GBK编码.另外,curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在 ...

  7. 去掉UItalbeview横线

    一.去掉UItalbeview中所有横线 //    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 二.自定义U ...

  8. [coci2015-2016 coii] dijamant【图论】

    传送门:http://www.hsin.hr/coci/archive/2015_2016/ 进去之后的最下面的国家赛.顺便说一句,dijamant是克罗地亚语的“钻石”的意思. 官方题解是说压位的暴 ...

  9. 使用express+mongoDB搭建多人博客 学习(3)connect-flash和mongodb,表单注册

    1.根目录下新建settings.js,存放数据库配置 module.exports={ cookieSecret:"myblog", db:"blog", h ...

  10. solr亿万级索引优化实践-自动生成UUID

    solr亿万级索引优化实践(三) 原创 2017年03月14日 17:03:09        本篇文章主要介绍下如何从客户端solrJ以及服务端参数配置的角度来提升索引速度. solrJ6.0提供的 ...