`
lovexuwenhao
  • 浏览: 199498 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2批量上传文件

阅读更多

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文件就不贴出来了,提供下载。

  • js.rar (2.4 KB)
  • 下载次数: 357
分享到:
评论
3 楼 Jasper520 2013-06-15  
我的alert(td);是null
2 楼 zhsan12 2009-10-23  
我使用调试的工具是 tomcat才出现上面的内容的!
1 楼 zhsan12 2009-10-23  
您的这个struts.xml里面的这句话是什么意思呀?
<default-interceptor-ref name="fileUploadStack"></default-interceptor-ref>
我这里面提示错误

相关推荐

    struts2 实现文件批量上传

    本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...

    struts2上传文件,批量上传文件,需要的直接下载

    Struts2是一个强大的Java web应用程序框架...以上就是关于"Struts2批量上传文件"的基本实现和相关知识点,希望对你有所帮助。在实际项目中,根据具体需求,可能还需要考虑性能优化、并发处理以及文件的版本控制等问题。

    Struts2批量上传

    ### Struts2批量上传技术详解 #### 一、引言 在Web开发中,文件上传是常见需求之一,尤其在需要处理多个文件上传时,批量上传功能显得尤为重要。Struts2框架提供了强大的文件上传支持,使得开发者能够轻松实现批量...

    Struts2文件批量上传

    Struts2文件批量上传是Java Web开发中常见的一种功能,主要应用于网站后台处理大量用户上传的文件,如图片、文档等。Struts2是一个强大的MVC框架,它提供了丰富的功能来支持文件上传操作,包括单个文件上传和批量...

    Struts2 单个、批量文件上传 精简源码

    在Struts2中,批量上传通常涉及到`List&lt;File&gt;`或`List&lt;Part&gt;`类型的属性,以接收多个文件。用户可以选择多个文件,然后这些文件会被一起发送到服务器。在Action中,你需要遍历这个列表并保存每个文件。 例如,批量...

    struts2 批量上传 图片+文件

    在这个场景中,我们讨论的是如何在Struts2中实现图片和文件的批量上传,并且在上传过程中显示进度条。 批量上传是指用户可以一次性选择多个文件进行上传,而不仅仅是一个文件。这通常需要前端界面支持多选文件的...

    struts2+ajax实现批量上传文件(简单实现,自己加工)

    FileUpload库可以帮助你方便地处理多个上传文件,包括读取文件内容、检查文件大小等。 配置Struts2的Action类后,确保在struts.xml配置文件中定义了对应的Action映射,这样Ajax请求才能正确路由到处理函数。同时,...

    struts1实现的文件批量上传

    FormFile是Struts1用来处理上传文件的类,它可以获取文件名、内容类型、大小等信息。在这个例子中,使用了一个ArrayList来存储用户选择的所有文件: ```java public class BatchUploadForm extends ActionForm { ...

    Struts批量上传文件实例word

    总的来说,Struts批量上传文件涉及到前端表单的正确配置、`ActionForm`的设计、`struts-config.xml`的配置以及Action类中处理文件上传的方法实现。通过以上步骤,你可以构建一个基本的Struts批量上传文件系统。在...

    Struts2文件批量上传.zip

    在Struts2中,文件上传是常见的功能之一,特别是批量上传,可以处理用户一次性上传多个文件的需求。下面将详细介绍Struts2实现文件批量上传的相关知识点。 1. **Struts2的ActionContext与FileUpload插件** Struts2...

    struts2中的批量上传与文件下载(解决中文乱码问题)

    本文将详细介绍如何在Struts2框架下实现批量上传与文件下载,并解决中文乱码问题。 一、Struts2文件上传 1. 配置Struts2文件上传支持: 在struts.xml配置文件中,我们需要添加`&lt;constant&gt;`元素来设置允许上传的...

    struts2+ajax+jquery异步批量上传超大文件.zip

    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的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线...

    GooUploader源码和基于GooUploader整合Struts2批量上传

    `GooUploader`和`Struts2`的整合提供了一种高效、便捷的批量上传解决方案。本文将深入解析`GooUploader`的源码,并探讨如何将其与`Struts2`框架整合,实现批量文件上传的功能。 首先,`GooUploader`是一款强大的...

    基于插件和Struts的批量上传

    2. **Struts2配置**:在Struts2框架中,需要为批量上传创建一个Action类,该类通常包含一个或多个接收文件的setter方法。在struts.xml配置文件中,需要定义对应的action,设置result类型为dispatcher,以便处理上传...

    struts2批量提交数据

    3. **配置Struts2**:在Struts2的配置文件(struts.xml)中,我们需要为批量提交的Action定义一个映射。 ```xml &lt;result name="success"&gt;/success.jsp &lt;result name="input"&gt;/input.jsp ``` 4. **处理请求**:...

    jquery+uploadify + struts2 + jsp 图片批量上传Demo

    在本文中,我们将深入探讨如何使用jQuery、Uploadify、Struts2和JSP技术实现一个图片批量上传的Demo。这个组合提供了高效、用户友好的文件上传解决方案,特别适合需要处理大量图片的Web应用。 首先,jQuery是一个轻...

    extjs struts2 多图片批量上传控件

    在批量上传过程中,Struts2接收前端发送的文件数据,并处理这些文件的存储和业务逻辑。它通常使用Action类来处理请求,配合Interceptor拦截器处理上传过程中的验证、权限检查等任务。Struts2的配置文件(struts.xml...

    基于Struts2.3的多文件批量上传/下载

    本篇文章将深入探讨如何在Struts2.3环境下实现多文件的批量上传和下载。 首先,我们需要理解文件上传的基本原理。在HTTP协议中,文件上传通常通过表单的`&lt;input type="file"&gt;`元素实现,然后服务器端的框架负责解析...

Global site tag (gtag.js) - Google Analytics