`
serenity
  • 浏览: 62473 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

转: Struts 2多文件上传(11) 上

阅读更多

11.2  多个文件上传

很多应用都要求在一个界面中可以上传多个文件,Struts 2框架也可以方便地支持多个文件同时上传,一般可以使用数组和List来实现。

11.2.1  使用数组上传多个文件

1)修改前面的upload.jsp文件,如代码11.5所示。

代码11.5  使用数组实现多个文件上传的JSP

 

<%@ page 

    language
="java" 

    contentType
="text/html; charset=UTF-8"

    pageEncoding
="UTF-8"
%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<title>使用数组实现多个文件上传</title>

</head>

<body>

<s:form action="doMultipleUploadUsingArray" method="POST" enctype="multipart/form-data">

    
<s:file label="文件1" name="upload" />

    
<s:file label="文件2" name="upload" />

    
<s:file label="文件3" name="upload" />

    
<s:submit value="上传"/>   

</s:form>

</body>

</html>

 

2)在该form中,定义了3个具有相同名称的文件域,所以需要在Action实现类中使用数组来封装这3个文件域。使用数组多个上传文件的业务控制器如代码11.6所示。

代码11.6  使用数组上传多个文件的业务控制器

 

package ch11;

import java.io.File;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Random;

import org.apache.commons.io.FileUtils;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class MultipleFileUploadUsingArrayAction extends ActionSupport {

    
private File[] uploads;

    
private String[] uploadFileNames;

    
private String[] uploadContentTypes;

    
private String[] dir;

    
private String[] targetFileName;

    
//属性的getter和setter方法

    
public File[] getUpload() {

        
return this.uploads;

    }


    
public void setUpload(File[] upload) {

        
this.uploads = upload;

    }


    
public String[] getUploadFileName() {

        
return this.uploadFileNames;

    }


    
public void setUploadFileName(String[] uploadFileName) {

        
this.uploadFileNames = uploadFileName;

    }


    
public String[] getUploadContentType() {

        
return this.uploadContentTypes;

    }


    
public void setUploadContentType(String[] uploadContentType) {

        
this.uploadContentTypes = uploadContentType;

    }


    
//文件上传

    
public String upload() throws Exception {

        
// 获得upload路径的实际目录

        String realPath 
= ServletActionContext.getRequest().getRealPath(

                
"/upload");

        
//获得实际目录

        String targetDirectory 
= realPath;

        String[] mydir 
= new String[uploads.length];

        String[] tname 
= new String[uploads.length];

        
for (int i = 0; i < uploads.length; i++{

            
// 生成保存文件的文件名称

            tname[i] 
= generateFileName(uploadFileNames[i]);

            
// 保存文件的路径

            mydir[i] 
= targetDirectory + "\" + tname[i];

            
// 建立一个目标文件

            File target 
= new File(targetDirectory, tname[i]);

            
// 将临时文件复制到目标文件

            FileUtils.copyFile(uploads[i], target);

        }


        setDir(mydir);

        setTargetFileName(tname);

        
return SUCCESS;

    }


    
// 为上传文件自动分配文件名称,避免重复

    
private String generateFileName(String fileName) {

        
// 获得当前时间

        DateFormat format 
= new SimpleDateFormat("yyMMddHHmmss");

        
// 转换为字符串

        String formatDate 
= format.format(new Date());

        
// 随机生成文件编号

        
int random = new Random().nextInt(10000);

        
// 获得文件后缀名称

        
int position = fileName.lastIndexOf(".");

        String extension 
= fileName.substring(position);

        
// 组成一个新的文件名称

        
return formatDate + random + extension;

    }


    
//属性的getter和setter方法

    
public String[] getDir() {

        
return dir;

    }


    
public void setDir(String[] dir) {

        
this.dir = dir;

    }


    
public String[] getTargetFileName() {

        
return targetFileName;

    }


    
public void setTargetFileName(String[] targetFileName) {

        
this.targetFileName = targetFileName;

    }


}


 

 说明 

使用数组上传多个文件同上传单个文件非常类似,并不复杂。

 

分享到:
评论

相关推荐

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    第八章:struts2文件上传下载.ppt

    第八章:struts2文件上传下载.ppt

    struts2实现文件上传下载

    首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在Action类中声明一个`List&lt;FileInfo&gt;`类型的字段,用于接收上传的文件...

    swfuplaod+struts2实现多文件上传

    下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

    struts2多文件的上传

    这可以通过添加`&lt;constant&gt;`标签来设置`struts.multipart.parser`为jakarta,这是Struts2推荐的多部分解析器,以支持大文件上传。同时,设置`struts.multipart.maxSize`属性,限制上传文件的大小。 ```xml ...

    struts2实现多文件上传下载

    文件上传比较多,多文件上传少一点 文件下载很少的,看似简单,实则不然 网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    个人总结:Struts2 上传文件的六种方法

    Struts2作为一款流行的Java Web框架,提供了多种方式来实现文件上传功能。下面将详细介绍在Struts2中实现文件上传的六种方法,并探讨如何将文件数据保存到数据库中。 1. **Struts2默认的FileUpload拦截器** Struts...

    struts2 实现文件批量上传

    1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    一个Struts1多文件上传实例(附Form中传List示例)

    2. **多文件上传**: 在Struts1中,多文件上传通常使用Apache的Commons FileUpload库来处理。该库提供了一种处理multipart/form-data类型请求的方式,这种类型的请求通常用于文件上传。要实现多文件上传,需要在...

    struts2框架下的文件上传

    Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...

    struts2上传文件源代码

    在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件上传功能,以及涉及到的相关知识点。 首先,文件上传是Web应用中常见的功能,它允许用户从本地计算机选择文件并将其发送到服务器。在Struts2...

    struts2实现的多个文件上传

    在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...

    struts2多文件上传

    Struts2多文件上传是Java Web开发中常见的一项功能,用于允许用户一次上传多个文件。在Struts2框架中,实现这一功能涉及到一系列的技术和步骤。以下是对这一知识点的详细说明: 1. **Struts2框架**:Struts2是一个...

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    struts2多文件上传显示进度

    在Struts2中实现多文件上传并显示进度是常见的需求,尤其是在处理大文件或者批量上传时,用户需要实时了解上传进度以提升用户体验。在本案例中,我们将探讨如何在不依赖任何第三方插件的情况下实现这一功能。 首先...

    Struts2文件上传源码

    6. **源码分析**: 要深入理解Struts2的文件上传机制,你需要查看Struts2的源码,特别是`org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest`和`org.apache.struts2.components.Form`这两个类。...

Global site tag (gtag.js) - Google Analytics