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文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
随机推荐
- spring boot基础 入门
spring boot基础 spring boot 的简单搭建 spring boot 的基本用法 spring boot 基本用法 自动配置 技术集成 性能监控 源码解析 工程的构建 创建一个mav ...
- mongodb 与关系型数据库
设计 MongDB 模式时应注意的问题 根据用户需求来设计模式. 如果想一起使用对象,请将这些对象合并到一个文档中,否则要将它们分开(但是要确保不需要连接). 经常复制数据(但要有一定限度),因为与计 ...
- [js高手之路] es6系列教程 - Set详解与抽奖程序应用实战
我们还是从一些现有的需求和问题出发,为什么会有set,他的存在是为了解决什么问题? 我们看一个这样的例子,为一个对象添加键值对 var obj = Object.create( null ); obj ...
- Spring常用注解介绍【经典总结】
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...
- Liers 树状数组+中国剩余定理
Liers Time Limit: 14000/7000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus ...
- Conscription poj3723(最大生成树)
Conscription Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6870 Accepted: 2361 Desc ...
- AIM Tech Round 4 (Div. 2)ABCD
A. Diversity time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Asp.net MVC4高级编程学习笔记-视图学习第一课20171009
首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...
- sqlserver 缩小表空间
1. 保留需要的数据之新表中->TRUNCATE原表数据->还原之前保留的数据之原表中->压缩表空间 脚本类似如下 SELECT * INTO #keep FROM Original ...
- BaseServlet,让一个servlet处理多个请求
BaseServlet 第一次学习servlet的时候是跟着传智播客免费的教学视频,其中崔希凡讲的是我学过自认讲的最好的一位,BaseServlet也是跟着他写过一次,当时很多东西不能理解,后来慢慢发 ...