struts.xml
<!-- 文件上传的拦截器栈 -->
<interceptors>
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="fileUpload">
<param name="maximumSize">409600</param>
<param name="allowedTypes">image/pjpeg,image/bmp,image/jpg,image/png,image/gif,image/jpeg</param>
</interceptor-ref>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="fileUploadStack"></default-interceptor-ref>
<action name="upload" class="com.gdf.struts2.action.UploadAction">
<result name="success">/test/uploadResult.jsp</result>
<result name="input">/test/upload.jsp</result>
<interceptor-ref name="fileUploadStack"></interceptor-ref>
</action>
UploadAction.java
package com.gdf.struts2.action;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.gdf.util.Upload;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport
{
private String username;
private String password;
private List<File> file;
private List<String> fileFileName;
private List<String> fileContentType;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public List<File> getFile()
{
return file;
}
public void setFile(List<File> file)
{
this.file = file;
}
public List<String> getFileFileName()
{
return fileFileName;
}
public void setFileFileName(List<String> fileFileName)
{
this.fileFileName = fileFileName;
}
public List<String> getFileContentType()
{
return fileContentType;
}
public void setFileContentType(List<String> fileContentType)
{
this.fileContentType = fileContentType;
}
@Override
public String execute() throws Exception
{
Upload upload=new Upload();
//ActionContext ctx = ActionContext.getContext();
//HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
//System.out.println(com.gdf.util.SessionManager.getUser(request).getId());
ArrayList list=upload.upload(file, this.getFileFileName(),"/files/");
if (list.size()>0){
return INPUT;
}else{
return SUCCESS;
}
}
}
Upload.java
package com.gdf.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.struts2.ServletActionContext;
public class Upload {
@SuppressWarnings("unchecked")
/**
* @file:文件域列表
* @fileName:上传文件的文件名
* @path:文件上传的目录,相对目录。
* 说明:文件上传所存放目录的规则:网站根目录下 files/会员ID/网站类型名称/上传文件分类名称/
* @返回结果:一个存放上传文件所在位置相对路径的ArrayList
* */
public ArrayList upload(List file,List fileName,String path) throws IOException{
String root = ServletActionContext.getRequest().getRealPath(path);
File dir=new File(root);
if (dir.exists()==false){
dir.mkdirs();
}
ArrayList list=new ArrayList();
for (int i = 0; i < file.size(); ++i)
{
InputStream is = new FileInputStream(file.get(i).toString());
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");//格式化时间输出
String Rname=sdf.format(new Date());//取得当前时间,Date()是java.util包里的,这作为真实名称
String name=fileName.get(i).toString();//得到上传文件的原名称
name=Rname+name;//重命名文件名称,命名规则为:时间+原文件名称
File destFile = new File(root, name);
OutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[400];
int length = 0;
while ((length = is.read(buffer)) > 0)
{
os.write(buffer, 0, length);
}
list.add(path+name);
is.close();
os.close();
}
return list;
}
}
upload.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>Struts2批量上传文件</title>
<script src="/js/check_upload_file.js"></script>
<script src="/js/validate.js"></script>
<script type="text/javascript">
function addMore()
{
var td = document.getElementById("more");
var br = document.createElement("br");
var input = document.createElement("input");
var button = document.createElement("input");
var span=document.createElement("span");
input.type = "file";
input.name = "file";
button.type = "button";
button.value = "Remove";
button.onclick = function()
{
td.removeChild(br);
td.removeChild(input);
td.removeChild(button);
td.removeChild(span);
}
input.onchange=function(){
clearTooltip(this);
checkExt(this);
}
td.appendChild(br);
td.appendChild(input);
td.appendChild(span);
td.appendChild(button);
}
</script>
</head>
<body>
<table align="center" width="50%">
<tr>
<td>
<s:fielderror cssStyle="color:red" />
</td>
</tr>
</table>
<s:form action="upload" theme="simple" enctype="multipart/form-data">
<table align="center" width="50%" border="1">
<tr>
<td>
用户名:
</td>
<td>
<s:textfield name="username"></s:textfield>
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<s:password name="password"></s:password>
</td>
</tr>
<tr>
<td>
file
</td>
<td id="more">
<s:file name="file" onchange="clearTooltip(this);checkExt(this);" ></s:file><span></span>
<input type="button" value="Add More.." onclick="addMore()">
</td>
</tr>
<tr>
<td>
<s:submit value=" submit "></s:submit>
</td>
<td>
<s:reset value=" reset "></s:reset>
</td>
</tr>
</table>
</s:form>
</body>
</html>
运行本例子之前,请自行搭建好Struts2的运行环境,例子中所用到的的js文件就不贴出来了,提供下载。
分享到:
相关推荐
本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...
Struts2是一个强大的Java web应用程序框架...以上就是关于"Struts2批量上传文件"的基本实现和相关知识点,希望对你有所帮助。在实际项目中,根据具体需求,可能还需要考虑性能优化、并发处理以及文件的版本控制等问题。
### Struts2批量上传技术详解 #### 一、引言 在Web开发中,文件上传是常见需求之一,尤其在需要处理多个文件上传时,批量上传功能显得尤为重要。Struts2框架提供了强大的文件上传支持,使得开发者能够轻松实现批量...
Struts2文件批量上传是Java Web开发中常见的一种功能,主要应用于网站后台处理大量用户上传的文件,如图片、文档等。Struts2是一个强大的MVC框架,它提供了丰富的功能来支持文件上传操作,包括单个文件上传和批量...
在Struts2中,批量上传通常涉及到`List<File>`或`List<Part>`类型的属性,以接收多个文件。用户可以选择多个文件,然后这些文件会被一起发送到服务器。在Action中,你需要遍历这个列表并保存每个文件。 例如,批量...
在这个场景中,我们讨论的是如何在Struts2中实现图片和文件的批量上传,并且在上传过程中显示进度条。 批量上传是指用户可以一次性选择多个文件进行上传,而不仅仅是一个文件。这通常需要前端界面支持多选文件的...
FileUpload库可以帮助你方便地处理多个上传文件,包括读取文件内容、检查文件大小等。 配置Struts2的Action类后,确保在struts.xml配置文件中定义了对应的Action映射,这样Ajax请求才能正确路由到处理函数。同时,...
FormFile是Struts1用来处理上传文件的类,它可以获取文件名、内容类型、大小等信息。在这个例子中,使用了一个ArrayList来存储用户选择的所有文件: ```java public class BatchUploadForm extends ActionForm { ...
总的来说,Struts批量上传文件涉及到前端表单的正确配置、`ActionForm`的设计、`struts-config.xml`的配置以及Action类中处理文件上传的方法实现。通过以上步骤,你可以构建一个基本的Struts批量上传文件系统。在...
在Struts2中,文件上传是常见的功能之一,特别是批量上传,可以处理用户一次性上传多个文件的需求。下面将详细介绍Struts2实现文件批量上传的相关知识点。 1. **Struts2的ActionContext与FileUpload插件** Struts2...
本文将详细介绍如何在Struts2框架下实现批量上传与文件下载,并解决中文乱码问题。 一、Struts2文件上传 1. 配置Struts2文件上传支持: 在struts.xml配置文件中,我们需要添加`<constant>`元素来设置允许上传的...
struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步...
基于Struts2和Spring的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线...
`GooUploader`和`Struts2`的整合提供了一种高效、便捷的批量上传解决方案。本文将深入解析`GooUploader`的源码,并探讨如何将其与`Struts2`框架整合,实现批量文件上传的功能。 首先,`GooUploader`是一款强大的...
2. **Struts2配置**:在Struts2框架中,需要为批量上传创建一个Action类,该类通常包含一个或多个接收文件的setter方法。在struts.xml配置文件中,需要定义对应的action,设置result类型为dispatcher,以便处理上传...
3. **配置Struts2**:在Struts2的配置文件(struts.xml)中,我们需要为批量提交的Action定义一个映射。 ```xml <result name="success">/success.jsp <result name="input">/input.jsp ``` 4. **处理请求**:...
在本文中,我们将深入探讨如何使用jQuery、Uploadify、Struts2和JSP技术实现一个图片批量上传的Demo。这个组合提供了高效、用户友好的文件上传解决方案,特别适合需要处理大量图片的Web应用。 首先,jQuery是一个轻...
在批量上传过程中,Struts2接收前端发送的文件数据,并处理这些文件的存储和业务逻辑。它通常使用Action类来处理请求,配合Interceptor拦截器处理上传过程中的验证、权限检查等任务。Struts2的配置文件(struts.xml...
本篇文章将深入探讨如何在Struts2.3环境下实现多文件的批量上传和下载。 首先,我们需要理解文件上传的基本原理。在HTTP协议中,文件上传通常通过表单的`<input type="file">`元素实现,然后服务器端的框架负责解析...