Struts2实现文件上传下载功能(批量上传)
今天来发布一个使用Struts2上传下载的项目,
struts2为文件上传下载提供了好的实现机制,
首先,可以先看一下我的项目截图

关于需要使用的jar包,需要用到commons-fileupload-1.3.1.jar,commons-io-2.2.jar包,有想要的可以联系我,
1. 现在让我们来看一下jsp界面:(使用了js,完成批量上传的功能)

具体代码如下(NewFile.jsp):
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript">
function addfile() {
var i = document.createElement("input");
i.setAttribute("type","file");
i.setAttribute("name","doc"); var d = document.createElement("div"); document.getElementById("ll").appendChild(i);
document.getElementById("ll").appendChild(d);
}
</script>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
<div id="ll">
上传<input type="file" name="doc" /><br/>
</div>
<a href="javascript:addfile()">继续上传</a>
<input type="submit" value="上传" />
</form>
</body>
</html>
2. form表单提交至upload.action代码如下:
package com.llh.action; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Random; import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { /**
*
*/
private static final long serialVersionUID = 1L; private File doc[]; private String docFileName[]; public File[] getDoc() {
return doc;
} public void setDoc(File[] doc) {
this.doc = doc;
} public String[] getDocFileName() {
return docFileName;
} public void setDocFileName(String[] docFileName) {
this.docFileName = docFileName;
} @Action(value = "upload", interceptorRefs = { @InterceptorRef(value = "fileUpload", params = { "allowedExtensions",
".jpg,.txt", "maximumSize", "2000000" }), @InterceptorRef(value = "defaultStack") }, results = {
@Result(name = "success", location = "/success.jsp"),
@Result(name = "input", location = "/error.jsp") })
public String execute() { for (int i = 0; i < doc.length; i++) {
File doc1 = doc[i];
String docFileName1 = docFileName[i]; String path = ServletActionContext.getServletContext().getRealPath("/upload/" + changeName(docFileName1));
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(doc1);
fos = new FileOutputStream(path);
byte[] b = new byte[1024];
int length = fis.read(b);
while (length != -1) {
fos.write(b, 0, length);
length = fis.read(b);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return SUCCESS;
} public String changeName(String oldName) {
int index = oldName.indexOf(".");
String name = oldName.substring(0, index);
String extension = oldName.substring(index, oldName.length());
Date d = new Date();
Random r = new Random();
return name + d.getTime() + r.nextInt(999999) + extension; } }
Struts2实现文件上传下载功能(批量上传)的更多相关文章
- C# 文件上传下载功能实现 文件管理引擎开发
Prepare 本文将使用一个NuGet公开的组件技术来实现一个服务器端的文件管理引擎,提供了一些简单的API,来方便的实现文件引擎来对您自己的软件系统的文件进行管理. 在Visual Studio ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- JavaWeb实现文件上传下载功能实例解析 (好用)
转: JavaWeb实现文件上传下载功能实例解析 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web ...
- 【转】Android 服务器之SFTP服务器上传下载功能
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- 【转】Android 服务器之SFTP服务器上传下载功能 -- 不错
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件
PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...
- summernote富文本图片上传,增加视频上传功能、批量上传方法
Summernote 是一个简单灵活的所见即所得的 HTML 在线编辑器,基于 jQuery 和 Bootstrap 构建,支持快捷键操作,提供大量可定制的选项. 但是却只有图片上传功能,没有视频上传 ...
- struts2实现文件查看、下载
CreateTime--2017年9月7日10:25:33 Author:Marydon struts2实现文件查看.下载 1.界面展示 <a style="color: #199 ...
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
随机推荐
- java 使用redis 数据库
[TOC] java 使用redis 数据库 连接redis package com.wsc.redis.Test1; import java.util.List; import java.util. ...
- JavaScript中DOM
概念 什么是DOM 1. 什么是 DOM DOM 的全称是document object model 它的基本思想是将结构化文佳例如HTML xml解析成一系列的节点.就像一颗树一样. 所有的节点和最 ...
- MapReduce执行过程
Mapper任务的执行过程: 第一阶段是把输入文件按照一定的标准分片(InputSplit),每个输入片的大小是固定的.默认情况下,输入片(InputSplit)的大小与数据块(Block)的大小是相 ...
- java集合系列——Map之HashMap介绍(八)
1.HashMap的简介 (JDK1.7.0_79版本) HashMap是基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺 ...
- 详解MySQL基准测试和sysbench工具
前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...
- 【BZOJ】1015 [JSOI2008]星球大战starwar(并查集+离线处理)
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...
- Count Color 线段树
Count Color Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- Collecting Bugs poj2096 概率DP
Collecting Bugs Time Limit: 10000MS Me ...
- windown快速安装xgboost
记录xgboost的快速安装方式,该方式适合pyhton3.5/3.6版本. 系统: win10 64bit python版本:3.6 1. 下载xgboost编译好的whl包 下载路径为:http: ...
- FPGA与Deep Learning
你还没听过FPGA?那你一定是好久没有更新自己在IT领域的知识了. FPGA全称现场可编程门阵列(Field-Programmable Gate Array),最初作为专用集成电路领域中的一种半定制电 ...