`
舟舟同学
  • 浏览: 45637 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

struts2开发8--批量上传文件

阅读更多

很多应用都要求一个界面同时上传多个文件,在struts2框架也可以很方便的支持多文件同时上传,下面介绍一种使用数组实现多文件上传的方法。

第一步:在项目中创建FileUpArrayAction类,来处理多个文件同时上传,其代码如下:

package cn.test.fileUp;

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 org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUpArrayAction extends ActionSupport {
 private File[] upload;
 private String[] uploadContentType;
 private String[] uploadFileName;
 private String savePath;
 private Date upTime;
// public Date getCreateTime()
// {
//  upTime=new Date();
//  return upTime;
// }
 private static void upLoad(File source,File target) throws IOException
 {
  InputStream inputStream=null;
  OutputStream outPutStream=null;
  try {
   inputStream=new BufferedInputStream(new FileInputStream(source));
   outPutStream=new BufferedOutputStream(new FileOutputStream(target));
   byte[] buffer=new byte[1024];
   int length=0;
   while((length=inputStream.read(buffer))>0)
   {
    outPutStream.write(buffer, 0, length);
   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally
  {
   if (null!=inputStream)
   {
    inputStream.close();
   }
   if(null!=outPutStream) 
   {
    outPutStream.close();
   }
  }
  
 }
 public String ArrayfileUpUI()
 {
  return "ArrayfileUpUI";
 }
 public String execute() throws IOException
 {
  for(int i=0;i<upload.length;i++)
  {
   String path1=ServletActionContext.getServletContext().getRealPath(savePath);
   File f=new File(path1);
   if(!f.exists())
   {
    f.mkdirs();
   }
   String path=ServletActionContext.getServletContext().getRealPath(savePath)+"\\"+this.uploadFileName[i];
   File target=new File(path);
   upLoad(this.upload[i],target);
  }
  return "success";
 }
 public File[] getUpload() {
  return upload;
 }
 public void setUpload(File[] upload) {
  this.upload = upload;
 }
 public String[] getUploadContentType() {
  return uploadContentType;
 }
 public void setUploadContentType(String[] uploadContentType) {
  this.uploadContentType = uploadContentType;
 }
 public String[] getUploadFileName() {
  return uploadFileName;
 }
 public void setUploadFileName(String[] uploadFileName) {
  this.uploadFileName = uploadFileName;
 }
 public String getSavePath() {
  return savePath;
 }
 public void setSavePath(String savePath) {
  this.savePath = savePath;
 }
 public Date getUpTime() {
  upTime=new Date();
  return upTime;
 }
 public void setUpTime(Date upTime) {
  this.upTime = upTime;
 }
}
第二步,创建上传界面ArrayfileUpUI.jsp,其代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="Arrayfile_execute" namespace="/"   enctype="multipart/form-data">
<s:file name="upload" label="文件1:"></s:file>
<s:file name="upload" label="文件2:"></s:file>
<s:file name="upload" label="文件3:"></s:file>
<s:submit value="确定"></s:submit>
</s:form>
</html>

第三步,创建上传成功界面fsuccess.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags" %>
<s:iterator value="uploadFileName" status="st">
<tr>
<td><s:property value="uploadFileName[#st.getIndex()]"/></td>
<td><s:date name="upTime" format="yyyy-MM-dd HH:mm:ss"/></td>
</tr>
</s:iterator>
</html>
第四步,配置struts.xml

<action name="Arrayfile_*" class="cn.test.fileUp.FileUpArrayAction" method="{1}">
        <param name="savePath">/upload</param>
        <result name="ArrayfileUpUI">/WEB-INF/jsp/ArrayfileUpUI.jsp</result>
        <result name="success">/WEB-INF/jsp/fsuccess.jsp</result>
        </action>

第五步,部署项目,启动tomcat,在浏览其中输入:http://localhost:8080/MyWeb/Arrayfile_ArrayfileUpUI

 

 

 

分享到:
评论

相关推荐

    struts2 实现文件批量上传

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

    Struts2文件批量上传

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

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

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

    Struts2批量上传文件

    Struts2批量上传文件是一个常见的Web开发功能,用于允许用户一次性上传多个文件。在Struts2框架中,这个功能可以通过其强大的Action支持和插件机制来实现。在本篇文章中,我们将深入探讨如何利用Struts2实现批量文件...

    Struts2批量上传

    Struts2的批量上传功能为Web应用提供了高效且易于使用的文件处理方案。通过合理设计Action类并利用Struts2的内置支持,开发者可以快速实现批量文件上传的需求,同时保持代码的清晰性和可维护性。掌握这一技术,不仅...

    Struts2文件批量上传.zip

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

    struts2 批量上传 图片+文件

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

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

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

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

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

    Struts1.2 formfile实现批量上传

    在Struts1.2框架中,FormFile是用于处理文件上传的一个关键组件,尤其是在实现批量上传功能时。本文将深入探讨如何使用FormFile在Struts1.2中实现实现批量文件上传,以及相关的技术要点。 一、Struts1.2简介 Struts...

    struts2+hibernate(文件批量上传至数据库+Ajax分页显示)

    总之,这个项目展示了如何将Struts2和Hibernate结合使用,以实现文件批量上传到数据库以及Ajax分页显示的功能。通过学习这个项目,开发者可以深入理解Java Web开发中的MVC模式、ORM框架以及前端动态加载技术。

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

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

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

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

    struts 上传案例(单个上传,批量上传)

    - 对于批量上传,Struts2同样依赖`CommonsFileUpload`。在Action中,需要创建一个`List&lt;File&gt;`或`FileItem[]`类型的字段来存储多个文件。 - JSP页面的表单需要允许用户选择多个文件,可以通过HTML5的`multiple`...

    struts2批量提交数据

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

    extjs struts2 多图片批量上传控件

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

    struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序

    在"struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序"这个项目中,开发者使用了Uploadify 3.2版本,这是一个支持异步上传和批量上传的插件,能够很好地与Struts2框架整合。以下是实现这一功能的关键...

    struts1 poi Excel批量导入支持xls和xlsx-源码java

    Struts1是一个经典的Java Web开发框架,而Apache POI是一个流行的API,用于处理Microsoft Office格式的文件,包括Excel。在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,...

    Struts2上传文件源码

    本示例是一个基于Struts2实现的简单文件上传功能,支持批量上传,对于初学者来说是学习Struts2和文件上传操作的良好起点。 首先,我们需要理解Struts2文件上传的基本原理。Struts2通过使用`struts2-core`库中的`...

Global site tag (gtag.js) - Google Analytics