- 浏览: 190209 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (153)
- 小技巧 (14)
- spring (3)
- struts2 (20)
- hibernate (0)
- java api (2)
- java se (8)
- jsp/servlet (4)
- oracle (0)
- mysql (1)
- ms sqlserver (1)
- js (30)
- jquery (8)
- ajax (2)
- .net (1)
- 软件 (1)
- j2ee (25)
- 网址收藏 (3)
- web综合 (9)
- web打印控件 (3)
- fckeditor (2)
- Groovy (1)
- PHP (5)
- 项目管理 (1)
- SEO (1)
- PostgreSQL (5)
- CKeditor (1)
- Fusion chart (1)
- 网页播放器 (1)
- 曾遇bug (3)
- java日志 (1)
- linux/Unix/CentOs (5)
- VBA (1)
- C# (0)
- 日期控件 (1)
- tomcat (2)
- cookies (1)
- java7 (1)
- JAVA文件操作 (2)
- hibernate;ehcache (2)
- 缓存 (1)
- dd (0)
- DB (1)
- android (2)
最新评论
-
flyingbin:
沙发,不过从头到尾没怎么看懂~
Windows密码本地破解通用方法 -
jfeimao:
credentialsToPrincipalResolvers ...
CAS(单点登陆)---总结一 -
haige18:
这两张图片引用的是网易的地址,现在资源有可能被删除了,所以就显 ...
Struts2中的Value Stack/Stack Context -
fengzhisha0914:
我的图片也不显示了..为何...
Struts2中的Value Stack/Stack Context -
greatwqs:
java.lang.IllegalStateException ...
java.lang.IllegalStateException:Cannot forward after response has been committed
参照上一篇博文《strut2 文件上传》,多文件上传只需要将属性类型改为数组类型或者list类型即可。
用来上传的web页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="multipleUpload.action" method="post" enctype="multipart/form-data">
<s:file label="图片一" name="myFile" ></s:file>
<s:file label="图片二" name="myFile" ></s:file>
<s:file label="图片三" name="myFile" ></s:file>
<s:file label="图片四" name="myFile" ></s:file>
<s:file label="图片五" name="myFile" ></s:file>
<s:submit value="提交" />
</s:form>
</body>
</html>
处理的Action:
package com.student.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Random;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class MultipleUpLoadAction extends ActionSupport {
private static final int BUFFER_SIZE = 2 * 1024;
private File[] myFile;
private String[] myFileFileName;
private String[] myFileContentType;
public File[] getMyFile() {
return myFile;
}
public void setMyFile(File[] myFile) {
this.myFile = myFile;
}
public String[] getMyFileFileName() {
return myFileFileName;
}
public void setMyFileFileName(String[] myFileFileName) {
this.myFileFileName = myFileFileName;
}
public String[] getMyFileContentType() {
return myFileContentType;
}
public void setMyFileContentType(String[] myFileContentType) {
this.myFileContentType = myFileContentType;
}
public String execute() throws Exception {
//原文件
File[] src = getMyFile();
//目标地址
String dstPath = ServletActionContext.getServletContext().getRealPath("/")+"/images";
//循环存放原文件
for(int i=0;i<src.length;i++){
//给源文件重新名称
String imageFileName = getImageFileName(getMyFileFileName()[i]);
ServletActionContext.getRequest().setAttribute("imageFileName"+(i+1), imageFileName);
//声明目标文件
File dst = new File(dstPath+"/"+imageFileName);
//将源文件拷贝到目标地
copy(src[i], dst);
}
return SUCCESS;
}
//将指定的文件拷贝到指定的目录
public static void copy(File src,File dst){
InputStream in = null;
OutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);
byte[] b = new byte[1024];
int len = 0;
while((len = in.read(b))!= -1){
out.write(b, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(null!=in){
in.close();
}
if(null!=out) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
//根据当前时间给文件取指定的名字
public static String getImageFileName(String fileName){
Random rnd = new Random();
int rn = rnd.nextInt(1000);
return new Date().getTime()+ rn + getExtention(fileName);
}
//获取文件的后缀
public static String getExtention(String fileName){
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
}
成功后返回的页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div style="padding: 3px; border: solid 1px #cccccc; text-align: center">
<img src="images/${imageFileName1}" />
<br/>
<img src="images/${imageFileName2}" />
<br/>
<img src="images/${imageFileName3}" />
<br/>
<img src="images/${imageFileName4}" />
<br/>
<img src="images/${imageFileName5}" />
</div>
</body>
</html>
配置Action的文件:
<action name="upload" class="com.student.action.UpLoadAction1">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/pjpeg,image/jpg,image/JPG
</param>
<param name="maximumSize">1048576</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success">/success.jsp</result>
<result name="input">/upload.jsp</result>
</action>
来自:http://blog.sina.com.cn/s/blog_6145ed810100eb98.html
发表评论
-
简述Struts2 Convention零配置
2012-07-05 13:24 806从struts2.1开始,struts2不再推荐使用Cod ... -
org.apache.catalina.connector.ClientAbortException
2012-04-27 11:37 10626当我们用Servlet导出图片,或用JSP导出excel时,会 ... -
jsp与Struts2有关跳转兼容性问题的解决方案
2011-03-23 13:22 984最近项目中遇到一个问题: 浏览器地址栏输入域名进入目标网页 ... -
spring+struts+hibernate分页实例
2010-11-22 10:58 875http://ajava.org/code/ssh/16733 ... -
在J2EE系统中应用OSCache 带附件jar包等
2010-10-30 18:51 773文章摘要 Cache是一种用于提高系统响应速度、 ... -
OSCache使用介紹
2010-10-30 18:47 841OSCache使用介紹 一.OSCach ... -
Struts2中的Value Stack/Stack Context
2010-10-30 14:39 2054Value stack栈中的值: 每一个动作在执行相应方 ... -
Log4j使用总结
2010-10-29 11:03 622一、介绍 Log4j是Apache的 ... -
struts2.1.8 hibernate3.3.2 spring2.5 整合需要哪些jar包
2010-10-28 16:07 893struts2 commons-logging-1.0. ... -
URLRewriter实现伪静态
2010-10-27 21:53 1195URLREwriter组件 下载地址:http://www. ... -
生成静态页面
2010-10-27 21:50 926常见的分类信息首页, ... -
struts2 文件上传
2010-10-27 21:43 921实现原理 Struts 2是通过Commons FileUp ... -
struts2.1 datetimepicker日期控件的使用
2010-10-27 21:33 951官方参考文档:http://str ... -
struts2 配置json
2010-10-27 21:26 903一、导入所需包,包括Struts2所需的各jar包,再导入st ... -
struts2 dojo 实现动态树
2010-10-27 21:23 13771.首先写两个工具类:TreeData.java 和 Tree ... -
基于Struts 2 Ajax实现的Login应用
2010-10-27 12:58 837Struts 2内嵌了Dojo工具包,实现对Ajax的支持。下 ... -
史上最详细的struts 2 标签整理
2010-10-27 12:53 871a a标签创建一个HTML超链接,等价于HTML ... -
Struts2.1 标签详细说明
2010-10-27 12:40 1064Struts 2.1 Tags 最近学习 Struts ... -
struts2 tree 标签
2010-10-27 10:15 2615struts2里面使用 tree标签 需要导入包:struts ...
相关推荐
Struts2多文件上传是Java Web开发中常见的一项功能,用于允许用户一次上传多个文件。在Struts2框架中,实现这一功能涉及到一系列的技术和步骤。以下是对这一知识点的详细说明: 1. **Struts2框架**:Struts2是一个...
总结来说,Struts2多文件上传涉及到Struts2配置、Action编写、HTML表单设计以及结果处理等多个环节。通过以上步骤,你可以在Struts2应用中实现稳定可靠的多文件上传功能。不过,实际项目中还需要考虑错误处理、安全...
Struts2是一个非常流行的Java Web框架,...总的来说,Struts2多文件上传并显示进度的实现需要结合前端和后端的技术,通过AJAX和XMLHttpRequest的`onprogress`事件来动态更新进度条,同时确保后端处理的高效和安全性。
在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...
在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...
在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件...
文件上传比较多,多文件上传少一点 文件下载很少的,看似简单,实则不然 网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供...
通过以上步骤,我们可以利用ExtJS的用户界面和Struts2的后台处理能力,实现一个完整的多文件上传功能。这个功能不仅提高了用户体验,还简化了开发流程。在实际项目中,还可以进一步优化,例如添加进度条显示、预览...
Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`<constant>`标签来设置`struts....
本篇文章将深入讲解如何利用AjaxFileUpload与Struts2实现多文件上传,并结合jQuery进行前端交互。 首先,我们需要在项目中引入必要的库。Struts2提供了struts2-jquery-plugin,这是一个基于jQuery的插件,包含了...