成功效果图:                

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

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. hihocoder #1335 : Email Merge(map+sort)

    传送门 题意 分析 每次插入人名与邮箱的时候,做一次并查集,然后做一次sort即可 trick 3 a 1 first@hihocoder.com b 1 second@hihocoder.com c ...

  2. Vertex Lit 顶点光照

    http://blog.csdn.net/heyuchang666/article/details/51565102 顶点光照(Vertex Lit) 是最低保真度的光照.不支持实时阴影的渲染路径.最 ...

  3. qscoj53(图的m着色问题)

    题目链接:http://qscoj.cn/contest/12/problem/53/ 题意:中文题诶- 思路:n个点, 那么最多用n种颜色,所以我们可以枚举颜色种类1~n,然后再判断用 i 种颜色可 ...

  4. vmware vSAN 入门

    参考:https://docs.vmware.com/cn/VMware-vSphere/6.5/com.vmware.vsphere.virtualsan.doc/GUID-18F531E9-FF0 ...

  5. MyBatist庖丁解牛(三)

    从MyBatis代码实现的角度来看,MyBatis的主要的核心部件有以下几个: SqlSession:作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能: Ex ...

  6. django-返回客户端外网ip服务

    在服务器应用初始化的时候,比如salt-minion,需要在配置文件里说明自己的id,一般用ip. 如果都在一个内网里,从ip命令里获取就行了. 但现在的企业后台环境更加复杂,很多都是跨机房.有物理机 ...

  7. Serega and Fun Codeforces - 455D || queue

    https://codeforces.com/problemset/problem/455/D 其实方法很多,然而当初一个也想不到... 1.分块,块内用链表维护 修改[l,r]就当成删除第r个元素, ...

  8. Spring+JCaptcha验证码使用示例

    1,导入jcaptcha.jar包,这里用的是1.0版本 2,编写captcha-context.xml配置文件(非必须,可在spring配置文件中直接添加): <?xml version=&q ...

  9. performSelector withObject afterDelay 在子线程上调用不运行

    如题,这是最近在修改一个数据同步模块时发现的问题.整个数据同步的任务是在App启动后放在一个后台执行的线程中的,执行某个单条数据同步任务成功后,会使用 [self performSelector:(n ...

  10. Crusher Django 学习笔记3 学习使用模板系统

    http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial3-using-template.html 顺便学习一下 goag ...