我最想要的多文件上传...上传越多越好----Struts 2多文件上传(12)

Extjs4.2+struts2+swfupload多文件上传 写这篇文章一方面是为了让大家能够快速的上手swfupload从而快速的开发,一方面怕博主以后忘了能够回来在翻翻自己的文章。 下面直接进入正题,在使用swfupload之前我们先来介绍下swfupload的特点,从而明白为什么要使用swfupload。 swfupload特点:    1.swfupload是使用flash进行文件上传,实现了无刷新页面。   阅读详情

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;

    }

}

★ 说明 ★

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

 

(3)在配置文件中增加如下配置:

<action name="doMultipleUploadUsingArray"

            class="ch11.MultipleFileUploadUsingArrayAction"

            method="upload">

            <result>/ch11/multipleUploadUsingArray-success.jsp</result>

            <result name="input">/ch11/multipleUploadUsingArray.jsp</result>

</action>

(4)multipleUploadUsingArray-success.jsp的内容如代码11.7所示。

代码11.7  multipleUploadUsingArray-success.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>

<table border="1">

<!--  使用迭代标签-->

<s:iterator value="dir" status="stat">

<tr>

    <td>文件名称<s:property value="%{#stat.index}" /></td>

    <td><s:property value="%{dir[#stat.index]}" /></td>

</tr>  

</s:iterator>

</table>

<table border="1">

<!--  使用迭代标签-->

<s:iterator value="uploadContentType" status="stat">

<tr>

    <td>文件类型<s:property value="%{#stat.index}" /></td>

    <td><s:property value="%{uploadContentType[#stat.index]}" /></td>

</tr>

</s:iterator>

</table>

<table border="1">

<!--  使用迭代标签-->

<s:iterator value="+targetFileName" status="stat">

<tr>

    <td>图片<s:property value="%{#stat.index}" /></td>

    <td><img src="<s:property value="'/bookcode/upload/'+targetFileName[#stat.index]"/>"/></td>

</tr>

</s:iterator>

</table>

</body>

</html>

(5)运行该示例,在浏览器中输入http://localhost:8080/bookcode/ch11/multipleUpload UsingArray.jsp,界面如图11.9所示。

图11.9  使用数组上传多个文件界面

(6)在这里,选择3个gif文件,单击“上传”按钮,结果如图11.10所示。

图11.10  使用数组上传多个文件结果

11.2.2  使用List上传多个文件

使用List来上传多个文件同数组基本相同,上传JSP文件和success逻辑视图的JSP文件均不用修改,只是需要相应的Action实现类即可。

具体如何实现请参考本书的介绍。。。。。。。

Java Struts框架下的多文件上传功能详解 Struts是一个开源的MVC框架,它主要用于简化基于Java EE的Web应用程序的开发。自从2000年面世以来,Struts成为了Java社区中广受欢迎的Web层框架之一,特别是其1.x版本,它为开发者提供了一种方式,将表示层从业务逻辑中分离出来,这极大地促进了程序模块化和可维护性的提升。ActionForm在Struts框架中扮演着数据载体的角色,它是一个特殊的JavaBean,用于封装客户端表单提交的数据。 阅读详情

相关推荐

实现多文件上传功能:Uploadify与Struts2的集成应用

MVC(Model-View-Controller)是一种广泛采用的软件架构模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种分割方法的优势在于它支持模块化和可重用性,有助于维护和更新应用程序。模型(Model)代表数据和业务逻辑,它与数据库直接交互,处理应用程序的数据逻辑。视图(View)负责展示数据,即用户界面。控制器(Controller)作为协调者,接收来自视图的用户输入,然后调用模型进行业务逻辑处理,并更新视图。

weixin_42620563的博客 968

Struts2文件上传-fileUpload拦截器

Struts2自带了文件上传拦截器方便进行文件上传,要使用这个功能,必须给使用了Struts2框架的工程添加commons.io包,然后在struts.xml里进行以下设置: 在标签之外添加,这句指定了上传文件的临时存放目录,以这句为例,临时存放目录为应用所在根目录下的temp文件夹,假设我的应用放在D:\ProgramFiles\apache-tomcat-6.0.24\webapps下,

z69183787的专栏 6216

Struts1框架下的多文件上传实现指南

在Web开发的演变历程中,Struts1作为一个经典的MVC框架,曾经是Java开发者广泛采用的解决方案。本章节旨在简要回顾Struts1框架的核心价值以及其在现代Web应用中的地位。Apache Commons FileUpload是一个用于处理HTTP文件上传的Java库。它提供了非常方便的方法来处理文件上传的整个过程,包括请求解析、文件保存、异常处理等。使用此组件可以极大地简化文件上传的代码编写,并且它支持多文件上传,非常适合本章节讨论的主题。

weixin_42372837的博客 687

ajaxFileUpload+struts2实现多文件上传

单文件上传参考:http://blog.csdn.net/itmyhome1990/article/details/23187087 单文件和多文件的实现区别主要修改两点, 一是插件ajaxfileupload.js里接收file文件ID的方式 二是后台action是数组形式接收 1、ajaxFileUpload文件下载地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/ 2、引入jquery-1.8.0.min.js、ajaxFileUpload.js文

itmyhome的专栏 7915

掌握Java多文件上传的完整流程

本文还有配套的精品资源,点击获取 简介:Java中实现多文件上传是Web应用中的常见需求。在本课程中,我们将利用MyEclipse开发环境与Uploadify Flash插件结合,学习如何创建一个高效的多文件上传系统。从前端交互到后端处理,包括AJAX请求、服务器端配置以及安全性考虑,本课程将深入探索整个上传机制,并指导学生如何保存文件至服务器、显示上传进度、处理安全问题,...

weixin_42561464的博客 1593

arcgis导出自身相交数据

今天接到一个客户需求,一份面文件,里面有好多元素是两两相交甚至是三个相交的,现在要把这些重叠部分提取出来,并且把相交部分的原始要素的名称也保留在字段中,也就是说名称这个会有好多个名称字段,如果两个要素相交那就是前两个名称字段有值,后面的为空,如果是三个要素相交,那么输出的这个要素就是前三个名称字段有值,后面的为空,嗯,这里也不太确定会出现多少个名称字段,这个需要依照数据来定。 这是原始数据,...

miaowumi92的博客 6787

Struts2文件上传、单文件、多文件上传【Struts2】

内容是struts2的文件上传汇总,包括单文件和多文件上传,记录下来,留作备份 Struts1实现文件上传的文章(http://blog.csdn.net/itwit/article/details/7031371) 1、单文件上传 1)JSP页面(simple.jsp) 2)Action(Si

2235

大数据运维面试题及答案

1. 架构组成:- 2 个 NameNode(Active 活跃节点、Standby 备用节点),实时同步元数据(通过 JournalNode 集群,默认 3 个节点,存储 edits 日志,Active 写入、Standby 读取以保持元数据一致);- 容错性强:通过 RDD 的 “ lineage(血缘)” 机制,任务失败时可快速重算,无需从头执行。:集群 “大脑”,管理元数据(文件目录、块位置),实时响应客户端请求,数据存于内存,元数据镜像(fsimage)和编辑日志(edits)持久化到磁盘;

weixin_42795092的博客 905

flex struts2单文件上传、同名文件上传、多文件上传

flexbuilder:3 ,Myeclipse:10.0,struts:2.3. 工程可以在http://download.csdn.net/detail/fansy1990/6621255下载 flex使用FileReference实现单文件上传,使用FileReferenceList实现多文件上传。 1. 单文件上传: flex单文件上传,一般要经过哪些步骤呢? (1)初始化一个F

fansy1990的专栏 3134

ESP32+ST7789 LCD屏实战:5分钟搞定中文显示与图片渲染(附完整代码)

本文提供了一份详细的ESP32驱动ST7789 LCD屏幕的实战指南。通过清晰的SPI硬件连接说明、ESP-IDF框架下的初始化代码,以及图片渲染与中文字库构建的核心算法,帮助开发者快速实现中文显示与图片渲染功能,并附有完整的代码示例和性能优化技巧。

weixin_29189377的博客 437

Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)

本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。

weixin_29266007的博客 391

Struts1文件上传、单文件、多文件上传【Struts1】

将struts1文件上传的操作汇总了一下,包括单文件上传和多文件上传,内容如下,留作备忘:  Struts2实现文件上传的文章(http://blog.csdn.net/itwit/article/details/7031785) 1、单文件上传 1)JSP页面(singleFileUpload.jsp) 文件上传 name: upload:

1万+

5090D显卡安装LLaMA-Factory避坑指南:PyTorch与CUDA版本兼容性问题解决

本文是针对5090D显卡安装LLaMA-Factory时遇到的PyTorch与CUDA版本兼容性问题的详细解决指南。文章深入剖析了因GPU架构代际差异导致的“no kernel image”报错根源,并提供了从环境诊断、安装匹配的PyTorch Nightly版本,到最终集成验证的完整路径,帮助用户确保LLaMA-Factory在5090D上稳定运行。

Apple的专栏 868

Struts2之文件上传(单文件/多文件)

简述: Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置, 指定用户上传文件的大小,有两种方式: 1)默认是在default.properties 文件的 struts.multipart.maxSize=2097152  键值指定为2097152 也就是2M,通过计算 2097152/(1024*1024) = 2 M

Super的专栏 5万+

Altium Designer20 PCB板子绘制

版层 top layer 顶层 bottom layer 底层 设置板子大小 布局 过孔 top layer层连到bottom layer层。通过via连接。 设置线宽 在design rules里可以设置线宽。 右键new rule 可以新增线宽,电源设置成20mil 还可以设置很多其他的线宽 修改安全距离 安全距离太短容易出现毛刺,然后短路,一般设置成20mil 修改元器件旋转角度 修改rotation step,每次旋转45°。 修改光标大小 下面的cursor type是修改光标

及时总结 2581

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

weixin_45735391的博客 6万+

struts2多文件上传

在实际web开发中,文件上传几乎在每个模块都要涉及到,比如注册账户要上传头像之类的。上传头像一般涉及到的都是单文件上传,而当要上传一些附件时,往往需要实现多文件上传。

下半夜的风 312

基于CNN的三相故障识别算法及实现(Matlab)

通过预处理数据、构建CNN模型、训练与评估模型等步骤,我们可以准确快速地识别三相故障。现代电力系统中,三相故障是一种常见的故障情况,可以导致电网中断、设备损坏甚至火灾等严重后果。本文将介绍基于卷积神经网络(CNN)的三相故障识别算法,并提供Matlab源代码实现。首先,将原始信号分为训练集和测试集。然后,对输入信号进行归一化处理,确保数据在合适的范围内。CNN适用于处理二维数据,所以我们可以将输入信号看作是时间序列数据和特征(如电压、电流等)的二维矩阵。在开始之前,我们需要一个包含正常和故障样本的数据集。

学习使你进步。 383

关于Struts的多文件上传

现在来说下多文件上传,其实就把上传文件当成是一个数组去处理,和单文件上传是一样的思路,直接贴一段代码: uploads.jsp @ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> @ taglib prefix="s" uri="/struts-tags" %>

1060

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Struts2多文件上传

在 Struts 2 中 实 现 多 文 件 上 传 也 非 常 简 单, 你 可 以 将 多 个<s:file> 绑 定 到 action 的 File 数组或 File 列表。 步骤 <s:form action="uploads" method="POST" enctype="multipart/form-data"> <s:file name="fil...

茨时代べ 的博客 446

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JQuery上传控件uploadify结合Struts2多文件上传

开发环境:    MyEclipse10 + tomcat7.0 框架版本介绍:JQuery1.9.1  、 uploadify3.2  、 Struts2.3.7   实现功能:    使用JQuery上传控件Excel文档,后缀限制.xls .xlsx,进行通用解析 技术要点:    使用HSSFWorkbook、XSSFWorkbook区分不同版本的电子表格

不积跬步,无以至千里。 2754

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

struts2文件上传与多文件上传

Struts2文件上传和多文件的上传 第一步:首先先写界面                    ="upFiles.action" enctype="multipart/form-data" method="post"/>            ="adds">            上传文件:="file" name="upload"/>

张晓丛的专栏 875

struts2的单文件上传与多文件上传

文件上传是指将本地文件上传到服务器的指定目录下,使用struts上传文件,首先要使form表单的enctype属性值设置为multipart/form-data。 单文件上传 文件上传页面代码如下 <body> <s:actionerror /> <form action="${pageContext.request.contextPath}/upload" meth...

包子的博客 376

struts2实现多文件的上传

其实实现多文件的上传和单文件的上传实现原理相同,都是将文件进行复制,多文件的上传只是将文件进行逐个的复制。 下面代码实现多文件的上传: 首先确定jsp页面: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 多文件上传 user

不会停下学习的脚步,重在思考。 357

ajax struts2 上传文件,AjaxFileUpload+Struts2实现多文件上传功能

本文重点给大家介绍AjaxFileUpload+Struts2实现多文件上传功能,具体实现代码大家参考下本文。单文件和多文件的实现区别主要修改两点,一是插件ajaxfileupload.js里接收file文件ID的方式二是后台action是数组形式接收2、引入jquery-1.8.0.min.js、ajaxFileUpload.js文件3、文件上传页面核心代码多文件上传function fileU...

weixin_39703926的博客 478
上一篇: 呼唤多彩界面-Struts 2标签库的组成和使用(11)
下一篇: 知道如何上去?也得知道如何下来--Struts 2 下载文件(13)
Struts2BBS
博客等级 码龄19年 19粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值