`

struts2 multifile upload

阅读更多
Struts2 也可以很方便地实现多文件上传。
         在输入表单域增加多个文件域: multifileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
    <title>多文件上传</title>
</head>
<body>
    <font color="red"><s:fielderror/></font>
    <form action="multiFileUpload.action" method="POST" enctype="multipart/form-data">
        文件标题:<input type="text" name="title" size="50" value="${param.title }"/><br/>
       <!-- 设置二个文件域,名字相同 -->
        选择第一个文件:<input type="file" name="upload" size="50"/><br/>
        选择第二个文件:<input type="file" name="upload" size="50"/><br/>
       <input type="submit" value=" 上传 "/>       
    </form>
</body>
</html>
  Action 类中用数组 来封装该多个文件域: MultiFileUploadAction.java
package org.qiujy.web.struts2;
 
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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 org.apache.struts2.ServletActionContext;
 
import com.opensymphony.xwork2.ActionSupport;
 
/**
 *处理多文件上传的Action类
 *
 *@authorqiujy
 *@version1.0
 */
publicclass MultiFileUploadAction extends ActionSupport {
    privatestaticfinalintBUFFER_SIZE = 16 * 1024;
    // 文件标题
    private String title;
    // 用File数组来封装多个上传文件域对象
    private File[] upload;
    // 用String数组来封装多个上传文件名
    private String[] uploadFileName;
    // 用String数组来封装多个上传文件类型
    private String[] uploadContentType;
    // 保存文件的目录路径(通过依赖注入)
    private String savePath;
 
    //以下为所有属性的getter和setter。省略。。。
 
    // 自己封装的一个把源文件对象复制成目标文件对象
    privatestaticvoid copy(File src, File dst) {
        InputStream in = null;
        OutputStream out = null;
        try {
            in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
            out = new BufferedOutputStream(new FileOutputStream(dst),
                    BUFFER_SIZE);
            byte[] buffer = newbyte[BUFFER_SIZE];
            int len = 0;
            while ((len = in.read(buffer)) > 0) {
                out.write(buffer, 0, len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != in) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != out) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
 
    @Override
    public String execute() throws Exception {
 
        File[] srcFiles = this.getUpload();
        // 处理每个要上传的文件
        for (int i = 0; i < srcFiles.length; i++) {
            // 根据服务器的文件保存地址和原文件名创建目录文件全路径
            String dstPath = ServletActionContext.getServletContext()
                    .getRealPath(this.getSavePath())
                    + "\\" + this.getUploadFileName()[i];
            File dstFile = new File(dstPath);
            this.copy(srcFiles[i], dstFile);
        }
 
        returnSUCCESS;
    }
 
}
 
分享到:
评论

相关推荐

    struts2实现的文件上传下载,上传文件重命名(按时间戳)

    Struts2是一个强大的MVC框架,广泛应用于Java Web开发中,包括文件的上传与下载功能。在本项目中,我们关注的是如何利用Struts2实现文件上传并重命名(按时间戳),以及如何进行文件下载。 一、Struts2文件上传 在...

    Struts上传下载范例

    最后,`upload-download-timestamp-multifile.zip`可能包含了一个多文件上传的示例,其中可能使用了时间戳作为文件名的一部分,以确保每个上传的文件都有唯一的名称。多文件上传在Struts 2中可以通过使用`File[]`...

    django-multifile-upload:多文件上传演示

    files = models.FileField(upload_to='documents/', blank=True, null=True, verbose_name="文件", multiple=True) ``` 这里的`files`字段使用了`multiple=True`参数,表示可以上传多个文件。 **二、视图(View)...

    jquery.MultiFile.js

    好东西jquery.MultiFile.js

    前端开源库-vue-multifile-loader

    【Vue-Multifile-Loader】是一个专为Vue.js开发的前端开源库,它主要解决的是在Vue组件中处理多文件上传和管理的问题。在现代Web应用中,尤其是在单页面应用(SPA)中,用户经常需要上传图片、文档等多类型文件,Vue...

    multifile, jQuery多文件选择插件.zip

    multifile, jQuery多文件选择插件 jQuery多文件上传插件概述 多文件( $ 。多文件) 是一个非侵入和关键 jQuery jQuery jQuery帮助你的用户轻松选择多个文件上传。它帮助你实现基本接口,以改善用户的文件选择体验,...

    Multiple File Upload - jQuery文件上传插件

    "Multiple File Upload - jQuery文件上传插件" 提供了一种高效且用户友好的解决方案,使得用户可以一次性上传多个文件,极大地提升了用户体验。下面将详细阐述这个插件的工作原理、主要特性以及使用方法。 首先,...

    multiple-file-upload

    "multiple-file-upload"这个主题就是关于如何使用jQuery库实现这一功能。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作和Ajax交互。在这个场景中,我们将探讨如何利用jQuery插件来...

    multiFile.exe

    multiFile.exe

    multifile:jQuery多文件选择插件

    概述 MultiFile($ .MultiFile)是jQuery的一种非干扰性且至关重要的非插件式插件,可帮助您的用户轻松选择多个文件进行上传。 它可以帮助您实现一个基本界面,以改善用户的文件选择体验,同时为开发人员提供3种简单...

    金手指(multifile to html) v1.0.0

    2. 利用IE引擎:金手指的转换能力得益于对Internet Explorer浏览器内核的巧妙利用。通过调用IE的解析能力,它可以将非HTML文件的内容以HTML的形式呈现,保持原始文件的结构和样式,提供一致的阅读体验。 3. 一站式...

    upload-multifile-server:带有RESTful示例的Java服务器上载多文件演示

    标题中的"upload-multifile-server"是一个项目,专注于在Java服务器上实现多文件上传功能,同时结合了RESTful API的设计原则。这个项目提供了一个演示,展示了如何通过RESTful接口接收和处理多个文件的上传请求。 ...

    MultiFile Converter-crx插件

    语言:English (United ... 通过安装此扩展,您同意条款和条件(https://multifile-converter.com/terms.html)和隐私策略(https://multifile-converter.com/privacy.html) 这个新的标签扩展是黑色岩石交互的产品。

    jquery.Mulltifile.js和jquery.form.js无刷新上传多个文件

    本示例中提到的"jquery.MultiFile.js"和"jquery.form.js"是两个JavaScript库,它们共同协作,使得在Web应用中实现这一功能成为可能。下面将详细阐述这两个库的功能以及如何结合使用来实现无刷新多文件上传。 1. **...

    MultiFileMergeTool源码.zip

    文本合并工具 完全绿色版本 小巧又方便的工具 便于将零散的小文本合并成完整的文本以方便在便携式设备上阅读。支持.txt、.csv等格式; 可合并文件夹下存放所有文件(不在乎文件夹深度多少层),一次导入,一次合并;...

    jquery-multifile-plugin:从 code.google.compjquery-multifile-plugin 自动导出

    # ##Overview 这个 jQuery 多文件上传插件 ($.MultiFile) 是一个非干扰性的 jQuery 插件,它可以帮助用户轻松地选择多个文件在您的服务器上快速轻松地上传,同时还提供一些基本的验证功能来帮助开发人员识别简单的...

    underscore-multifile-template:增强下划线模板语法可用性的实验性实用程序

    2. **创建部分视图**:在你的项目目录中,为每个独立的UI组件创建一个单独的模板文件,例如`header.html`, `footer.html`等。 3. **定义主模板**:创建一个主要的模板文件,比如`index.html`,在这个文件中,你可以...

    java上传并读取excel工具类

    2. **MultiFile转File**: 如果上传的是一个包含多个文件的压缩包(如.zip),我们需要先解压这个压缩包。可以使用Java内置的`ZipInputStream`和`ZipEntry`类,或者使用第三方库如Apache Commons Compress。解压后...

    图片转码BASE64Decoder.jar

    2. 分组:Base64编码每3个字节为一组,不足3字节的,用0填充,确保每个组有4个字节。 3. 编码:将每个4字节的组转换为6个字符的Base64编码字符串,每个字符代表6位二进制数。 4. 添加填充符:如果原始数据不是3的...

Global site tag (gtag.js) - Google Analytics