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;
}
}
分享到:
相关推荐
django-multifile-upload 多文件上传演示
struts2实现的文件上传下载,上传文件重命名(按时间戳)
好东西jquery.MultiFile.js
前端开源库-vue-multifile-loaderVue多文件加载程序,用于多文件Vue组件的Webpack加载程序。
multifile, jQuery多文件选择插件 jQuery多文件上传插件概述 多文件( $ 。多文件) 是一个非侵入和关键 jQuery jQuery jQuery帮助你的用户轻松选择多个文件上传。它帮助你实现基本接口,以改善用户的文件选择体验,...
multiFile.exe
概述 MultiFile($ .MultiFile)是jQuery的一种非干扰性且至关重要的非插件式插件,可帮助您的用户轻松选择多个文件进行上传。 它可以帮助您实现一个基本界面,以改善用户的文件选择体验,同时为开发人员提供3种简单...
上载多文件服务器 带有RESTful示例的Java服务器上载多文件演示 通过设置mongoDB 克隆 使用Eclipse IDE导入项目 清洁项目 跑步并享受
语言:English (United ... 通过安装此扩展,您同意条款和条件(https://multifile-converter.com/terms.html)和隐私策略(https://multifile-converter.com/privacy.html) 这个新的标签扩展是黑色岩石交互的产品。
不止能处理TXT和HTML文件,其它可执行文件,图片等都可以(借助于IE的强大威力)。
文本合并工具 完全绿色版本 小巧又方便的工具 便于将零散的小文本合并成完整的文本以方便在便携式设备上阅读。支持.txt、.csv等格式; 可合并文件夹下存放所有文件(不在乎文件夹深度多少层),一次导入,一次合并;...
# ##Overview 这个 jQuery 多文件上传插件 ($.MultiFile) 是一个非干扰性的 jQuery 插件,它可以帮助用户轻松地选择多个文件在您的服务器上快速轻松地上传,同时还提供一些基本的验证功能来帮助开发人员识别简单的...
因业务需求需将MultipartFile 转 file 转base64传至第三方实现接入第三方文件上传
ec-artifact-multifile-download 这是一个 Electric Commander 插件,允许用户从工件中选择和下载多个文件夹/文件。
php-多文件下载 从 URL 类下载基于 PHP 的多个文件 使用此类在单个请求中将多个文件从远程 URL 下载到一个目录。 该类使用 cURL,因此请确保已安装 用法 包含类 ... 设置要下载的文件 $files_to_download = array( ...$m
下划线多文件模板 这是一个很小的测试,希望提供一种扩展 Underscore 的模板语法以模拟部分页面渲染和更好的文件结构的方法:)
java上传并读取excel工具类 涉及到MultiFile转FIle 以及多个sheet页
利用jxl包结合java反射机制和注释,直接把list生成对应的Excel文件,即只需传入list、对应生成的对象、标题就可以生成excel文件write(String title, List list,Class c),实现一个简单生成excel工具类
概要 :- use_module(library(djson)).:- multifile djson:json//1.djson:json(point(X,Y)) --> json({ x: X, y: Y }).?- json_term(Json, point(1,2)).Json = '{"x":1, "y":2}'.?- json_term('{"y":2, "x":1}', ...