成功效果图:                

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

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. jquery冲突的关键字nodeName、nodeValue和nodeType!

    原文:http://blog.csdn.net/hdfyq/article/details/52805836 [缘由]在工作流数据库设计的时候,  都节点管理的功能.  结果有2个字段为  NODE_ ...

  2. jQuery 设置图片 src 的2种方法

    // 方法1 $('#imgValidateCode').attr("src", data.CodeUrl); // 方法2 var self = $("#refresh ...

  3. ES6之Promise对象学习——8个例子学会Promise

    目录 Promise 立即执行 Promise 三种状态 Promise 不可逆性 链式调用 Promise.then()回调异步性 Promise中的异常 Promise.resolve() res ...

  4. P4609 [FJOI2016]建筑师(第一类斯特林数)

    传送门 没想到连黑题都会有双倍经验的 其实这题本质上是和CF960G Bandit Blues一样的,不过那里是要用分治FFT预处理第一类斯特林数,这里直接打表预处理第一类斯特林数就可以了 //min ...

  5. [Swift]堆栈Stack:检索最小元素时间复杂度O(1)

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. hdu 1695 GCD(容斥)

    题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline int read() { , ...

  7. LCT 学习笔记

    LCT学习笔记 前言 自己定的学习计划看起来完不成了(两天没学东西,全在补题),决定赶快学点东西 于是就学LCT了 简介 Link/Cut Tree是一种数据结构,我们用它解决动态树问题 但是LCT不 ...

  8. Codeforces Round #497 (Div. 2) C. Reorder the Array

    Bryce1010模板 http://codeforces.com/contest/1008/problems #include <bits/stdc++.h> using namespa ...

  9. linux下mysql中文乱码

    登录mysql执行mysql> show variables like 'character%';发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my.c ...

  10. 安装drupal对服务器环境的要求

    Drupal 8 Apache 2.x PHP 5.5.9 及以上版本 MySQL 5.5.3 及以上版本 Drupal 7 Apache 2.x PHP 5.2.5 及以上版本(推荐 PHP 5.4 ...