将下面两个jar文件加入lib
commons-fileupload.jar
commons-io.jar
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>简单的文件上传</title>
</head>
<body>
<!-- 为了完成文件上传,设置该表单的enctype属性为multipart/form-data。 -->
<s:form action="upload.action" method="post" enctype="multipart/form-data" theme="simple">
<s:fielderror></s:fielderror>
选择文件:<s:file name ="upload"/> <br>
选择文件:<s:file name ="upload"/> <br>
选择文件:<s:file name ="upload"/> <br>
<s:submit />
</s:form>
</body>
</html>
action
action
package org.login.actions;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.apache.struts2.ServletActionContext;
import org.login.page.DateFormatUtil;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport {
// 封装单个上传文件域的属性
// private File upload;
// 封装单个上传文件类型的属性
// private String uploadContentType;
// 封装单个上传文件名的属性
// private String uploadFileName;
//封装多个上传文件域的属性
private List<File> upload = new ArrayList<File>();
// 封装多个上传文件类型的属性
private List<String> uploadContentType = new ArrayList<String>();
// 封装多个上传文件名的属性
private List<String> uploadFileName = new ArrayList<String>();
//动态设置上传文件保存地址
private String savePath;
public String getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
/*
* // 上传单个文件对应文件内容的setter和getter方法
* public void setUpload(File upload) {
* this.upload = upload;
* }
* public File getUpload() {
* return (this.upload);
* }
*
* //上传单个文件的文件类型的setter和getter方法
* public void setUploadContentType(String uploadContentType) {
* this.uploadContentType = uploadContentType;
* }
* public String getUploadContentType() {
* return (this.uploadContentType);
* }
*
* // 上传单个文件的文件名的setter和getter方法
* public void setUploadFileName(String uploadFileName) {
* this.uploadFileName = uploadFileName;
* }
* public String getUploadFileName() {
* return (this.uploadFileName);
* }
*/
//上传多个文件对应文件内容的setter和getter方法
public List<File> getUpload() {
return upload;
}
public void setUpload(List<File> upload) {
this.upload = upload;
}
// 上传多个文件的文件类型setter和getter方法
public List<String> getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(List<String> uploadContentType) {
this.uploadContentType = uploadContentType;
}
// 上传多个文件的文件名的setter和getter方法
public List<String> getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(List<String> uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String upload() {
//上传多个文件
List<File> files = getUpload();
// String ext ="";
FileOutputStream fos = null;
FileInputStream fis = null;
byte[] buffer = new byte[1024];
int len = 0;
Random rd = new Random();
for (int i = 0; i < files.size(); i++) {
try {
//以服务器的文件保存地址和当前时间组合文件名建立上传文件输出流
// ext =uploadFileName.get(i).substring(uploadFileName.get(i).lastIndexOf('.'));
/* fos = new FileOutputStream(getSavePath()+ File.separator+
* DateFormatUtil.getCurrentCustomFormatDateTime(DateFormatUtil.DATE_TIME_FORMAT_14) +
* String.valueOf(rd.nextInt(1000))+ext);
*/
fos = new FileOutputStream(getSavePath() + File.separator
+ uploadFileName.get(i));
// 以上传文件建立一个文件上传流
fis = new FileInputStream(files.get(i));
// 将上传文件的内容写入服务器
len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*上传单个文件
* try {
* // 以服务器的文件保存地址和原文件名建立上传文件输出流
* FileOutputStream fos = new FileOutputStream(ServletActionContext .getRequest().getRealPath("") +
* File.separator + "upload" + File.separator + getUploadFileName());
* // 以上传文件建立一个文件上传流
* FileInputStream fis = new FileInputStream(getUpload());
* // 将上传文件的内容写入服务器
* byte[] buffer = new byte[1024];
* int len = 0;
* while ((len = fis.read(buffer)) > 0) {
* fos.write(buffer, 0, len);
* }
* } catch (Exception e) {
* }
*/
return SUCCESS;
}
}
struts.xml
<action name="upload" class="UploadAction" method="upload">
<!-- 配置fileUpload的拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 配置允许上传的文件类型 -->
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg,application/msword,text/plain
</param>
<!-- 配置允许上传的文件大小 -->
<param name="maximumSize">2000000000</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<!-- 动态设置Action的属性值 -->
<param name="savePath">/upload</param>
<result>/upload_succ.jsp</result>
<result name="input">/upload.jsp</result>
</action>
上传成功页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>上传成功</title>
</head>
<body>
上传成功!<br>
<!-- 输出上传的表单里的文件标题属性 -->
文件标题:<s:property value=" + title"/><br>
<!-- 根据上传文件的文件名,在页面上显示上传的图片 -->
文件为:<s:property value="uploadFileName"/><br>
</body>
</html>
分享到:
相关推荐
Struts2.0 实现文件上传进度 原理和实现 主要是实现Struts2.0的监听器
Struts2.0实现文件上传例子
struts2.0上传文件 struts2.0上传文件 struts2.0上传文件 struts2.0上传文件
01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解...09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX
Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 ...在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX
是一个完整的用struts2.0实现文件上传功能的源码
Struts2.0 文件上传与下载全解析Struts2.0 文件上传与下载全解析
09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX Struts2中用Spring实现IoC.doc Struts2中的零配置与CoC(Convention over Configration...
功能强大的Struts2.0+Extjs实现的文件上传,包含文件上传进度,文件的下载,压缩,解压多文件删除等
可以用struts做相关下载及上传 是自己写的,还比较好用! 能正常运行
我的Struts2.0文件上传原理实例 博文链接:https://zmx.iteye.com/blog/459187
使用struts2.0进行多文件同时上传
struts2.0文件上传 拦截器 验证器 struts.xml配置文档详解 本人在该实例中遇到的最大问题及解决方案: "struts2.0做文件上传关于所加载的错误包造成的问题心得" 1:commons-io-1.4.jar 做上传时,如果用的该包是1.0的...
基于Struts2.0框架的文件上传实例, 可以同入门者参考 已测试过,可运行.
struts2.0文件上传的一个实例,全局文件上传,请读者多多阅读
ext结合struts2.0实现文件上传,代码详细,加载项目即可以看到效果。
该案例是基于struts2.0 来上传图片的案例,可以轻松的限制图片的类型,大小路径,如果有不明白的地方可以844818108@qq.com
struts2.0+spring2.5+hibernate3.0整合框架,下载导入到eclipse下即可。。启动tomcat前先修改jdbc.properties文件。由于lib文件较大,所以请自行导入相关lib包。
使用struts2.0上传文件,完全解决了中文乱码问题。运行项目前请先在D盘建立个名tmp的文件夹,实例上传的文件将保存在tmp文件夹中。文件大小限制为15M,该示例蛮完整的,有些架包忘删了导致项目有点大。