struts2的多个文件上传
成功效果图: 
上篇文章描述了单个文件的上传和配置,下面主要讲解下不同的地方:
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的多个文件上传的更多相关文章
- Struts2框架下的文件上传文件类型、名称约定
Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...
- Struts2(十五)实现文件上传
一.导入包 需要将commons-fileupload和commons-io包和struts包一起导入 实现步骤: 在Jsp页面实现客户端选择上传文件 配置Struts.xml,拦截器会自动接收上传的 ...
- Struts2学习笔记(十一)——文件上传
1.单文件上传 单文件上传步骤: 1)创建上传jsp页面 文件上传的表单提交方式必须是POST方式,编码类型:enctype="multipart/form-data",默认是 a ...
- Struts2 使用Jquery+ajax 文件上传
话不多说 直接上代码 前台js: var formData = new FormData(); formData.append("file1",$("#file1&quo ...
- Struts2的简单的文件上传
1文件上传的流程: 第一步:首先得用表单标签的<s:file>在客户端接收上传的文件例如: <%@ page language="java" import=&qu ...
- 深入分析JavaWeb Item47 -- Struts2拦截器与文件上传下载
一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事. 过滤器是Servlet规范中的技术,能够对请求和响应进行过滤. 拦截器是Struts2框架中的技术. ...
- struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)
struts2多文件上传我想只要会用struts2的朋友都不会陌生,但是怎么在action中根据用户上传的文 件把文件路径写到数据库中对应的字段上呢?ps:我的意思是这样,页面上有固定的5个上传文件的 ...
- 利用Struts2拦截器完成文件上传功能
Struts2的图片上传以及页面展示图片 在上次的CRUD基础上加上图片上传功能 (https://www.cnblogs.com/liuwenwu9527/p/11108611.html) 文件上传 ...
- struts2中简单的文件上传
2016-08-31 一. 文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...
- [原创]Struts2奇葩环境任意文件上传工具(解决菜刀无法传文件或上传乱码等问题)
上面这问题问得好 1 不知道大家有没碰到有些Strus2站点 上传JSP后访问404 或者503 注意我说的是404或503不是403(要是403换个css/img等目录或许可以) 但 ...
随机推荐
- lightoj1064 【DP求方案】
题意: n个相同的骰子,问你掷出>=x点数的可能性: 思路: dp[i][j]代表前 i 个骰子掷出 j 点数的方案数; 然后Σdp[n][x]-dp[n][6*n]就好了 卧槽,一开始想的是拆 ...
- Android studio改包名
http://www.cnblogs.com/Kyouhui/p/4632813.html Android Studio,咱们开发安卓的利器,自推出就受到移动开发者的追捧,但一路走来,大家谈到他,充满 ...
- Mecanim动画系统 - 在角色上使用Mask 叠加动画层
http://www.narkii.com/club/thread-305706-1.html 2013-10-9 01:15 上传 下载附件 (78.65 KB) 导读:五分钟了解Mecanim角色 ...
- 关于 js中的arguments 对象
arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推.这个对象只有在函数体内部,才可以使用. var f = fu ...
- BZOJ1415(期望dp)
解法: 首先bfs预处理go数组:可可在j点时聪聪在点i是怎样贪心走的,这是为了之后O(1)获取转移线路. 然后dfs记忆化一下f[i][j],代表从i到j的期望,对于每层:将所有情况的期望值相加.边 ...
- Codeforces 526F Pudding Monsters
先把题目抽象一下: 有一个静态的数组,求有多少个区间[i,j]满足:j-i==max{ai,...,aj}-min{ai,...,aj} 也就是要求max-min+i-j==0的区间数 所以肿么做呢? ...
- oracle 数据库 存储过程
destinct(去除重复行), to_char(转换自符串), to_date(日期格式函数), substr(截取自符串), lower(将字母转换为小写), upper(将字母转换为小写), t ...
- 转 造成ORA-01843 无效的月份的一些原因
- java线性表之顺序表实现
仿照arrayList写了一个简化版的线性表,主要为了用来研究arrayList在实现什么操作的情况下比较节省性能,楼主文采很差,直接上代码. import java.util.Arrays; pub ...
- JTable运行的时候抛出NullPointerException的问题
在一个需要动态更新JTable的程序中,为了实现动态刷修数据.在主线程之外开了个新线程来进行算法的执行还有数值计算,然后最后调用 jTable.updateUi(); 的方法. 然后图形界面上是一点问 ...