将下面两个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框架下实现文件上传的基本过程。这个例子中,`StrutsUpload`可能是项目或示例代码的名称,具体实现细节可能包含Action类、配置文件、表单页面等相关文件。
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实现文件上传功能。在实际开发中,还可以结合其他技术,如Spring、Hibernate等,以构建更复杂的业务流程。记住,始终要关注安全性,以确保应用的稳定性和用户的数据安全。
下面我们将深入探讨如何在Struts2.0中实现文件上传和下载。 ### 文件上传 1. **依赖库**:首先,你需要在项目中引入Apache Commons FileUpload和Commons IO库。这两个库提供了处理文件上传的基本工具和功能。 2. ...
这个“struts2.0上传文件源码”提供了一个完整的示例,展示了如何在Struts2.0环境中实现文件上传功能。在Web应用中,文件上传是常见的需求,例如用户可能需要上传头像、文档或者其他类型的数据。 在Struts2.0中,...
文件上传是Web应用中的常见需求,Struts2.0提供了完善的文件上传解决方案。它利用MultipartResolver接口处理多部分请求,支持单文件和多文件上传。开发者只需简单配置,即可轻松实现文件上传功能。 十、Struts2.0中...
5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...
Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...
在本文中,我们将深入探讨如何使用ExtJS的UploadDialog插件与Struts2.0框架相结合,实现一个功能完备的多文件上传功能。这是一项在Web应用开发中常见的需求,对于用户交互性和数据管理有着重要作用。 首先,让我们...
以下是对Struts2.0文件上传原理的详细解释: 1. **HTTP协议与表单提交** 在HTML表单中,如果需要上传文件,`<form>`标签必须包含`enctype="multipart/form-data"`属性。这是因为普通POST请求无法处理二进制数据,...
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的核心功能以及实现上传与下载功能和数据库操作的示例。 Struts2的核心概念之一是模型-视图-控制器(MVC)架构,它将业务逻辑、数据和用户界面分离开来,使得开发者可以独立地处理各个...
功能强大的Struts2.0+Extjs实现的文件上传,包含文件上传进度,文件的下载,压缩,解压多文件删除等
这个案例展示了Struts2.0文件上传的基本流程,包括Action类的编写、Struts配置、文件上传逻辑以及前端表单设计。通过这种方式,开发者可以灵活地控制文件上传的过程,确保安全性并提供友好的用户体验。同时,这个...
包含了Struts2.0的进阶主题,如动态方法调用(Dynamic Method Invocation,DMI)、OGNL(Object-Graph Navigation Language)表达式语言的使用、异常处理机制、国际化(Internationalization, i18n)支持以及文件上传...
### Struts2.0 文件上传实现详解 #### 一、概述 在Web开发中,文件上传是一项常见的功能需求。Struts2框架提供了简洁且强大的机制来处理文件上传问题。本文档将详细介绍如何利用Struts2.0进行文件上传操作,包括...