对于文件上传的工程的源代码 附有源代码,本人已经在本地调试通过,做个备份用。
FileUploadAction.java的源代码---实现文件上传的类
package zhenjw.fileupload;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
/**
* @author zjw
* @datetime Jan 4, 2009 11:02:50 PM
*/
public class FileUploadAction extends ActionSupport {
private static final long serialVersionUID = 5156288255337069381L;
private String contentType;
private File upload;
private String fileName;
private String caption;
//注意方法名的取名规则为 set+File类型的变量名的第一个字母大字后的变量名+FileName
public String getUploadFileName() {
return fileName;
}
public void setUploadFileName(String fileName) {
this.fileName = fileName;
}
public String getUploadContentType() {
return contentType;
}
public void setUploadContentType(String contentType) {
this.contentType = contentType;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
}
public String input() throws Exception {
return SUCCESS;
}
public String upload() throws Exception {
System.out.println();
System.out.println();
System.out.println();
String newfilename=ServletActionContext.getServletContext().getRealPath("/")+System.currentTimeMillis()+this.getExt();
this.save(newfilename);
System.out.println(upload.getAbsolutePath());
System.out.println(upload.getName());
System.out.println(contentType);
System.out.println(fileName);
System.out.println();
return SUCCESS;
}
private String getExt()
{
String result="";
if(this.fileName!=null)
{
int pos=this.fileName.lastIndexOf(".");
if(pos>0)
{
result=this.fileName.substring(pos);
}
}
return result;
}
/** 保存到自已想要保存的地方
*/
private void save(String newfilename) {
try {
int bytesum = 0;
int byteread = 0;
if (this.upload.exists()) { //文件存在时
InputStream inStream = new FileInputStream(this.upload); //读入原文件
FileOutputStream fs = new FileOutputStream(newfilename);
byte[] buffer = new byte[1024*5];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
//System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
}
FileUploadAction-validation.xml---------与FileUploadAction.java要放在同一个包下是FileUploadAction的验证文件
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="upload">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[upload.length() >= 0]]></param>
<message>File cannot be empty</message>
</field-validator>
</field>
<!-- 可以与properties文件相互配合使用
<field name="caption">
<field-validator type="requiredstring" >
<message key="error.caption.required" />
</field-validator>
</field>
-->
<field name="caption">
<field-validator type="requiredstring">
<message>Caption cannot be empty</message>
</field-validator>
</field>
</validators>
struts.xml---struts的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!--struts2.0的配置文件 -->
<struts>
<!--struts2.0默认的配置文件-->
<include file="struts-default.xml"></include>
<!--与文件上传相关的配置文件-->
<include file="struts-fileupload.xml"></include>
</struts>
struts-fileupload.xml的源代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="fileupload" extends="struts-default" namespace="/fileupload">
<action name="upload" class="zhenjw.fileupload.FileUploadAction" method="input">
<result>upload.jsp</result>
</action>
<action name="doUpload" class="zhenjw.fileupload.FileUploadAction" method="upload">
<result name="input">upload.jsp</result>
<result>upload-success.jsp</result>
</action>
</package>
</struts>
web.xml---的源代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>test</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
upload.jsp---的源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>showcase upload</title>
</head>
<body>
<h1>FileUpLoad Exmaple</h1>
<s:actionerror/>
<s:fielderror/>
<!-- 表单 -->
<s:form action="doUpload" enctype="multipart/form-data">
<s:file name="upload" label="File"></s:file>
<s:textfield name="caption" label="Caption"></s:textfield>
<s:submit></s:submit>
</s:form>
</body>
</html>
upload-success.jsp--文件的源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>doFileUpload</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<p>
<ul>
<li>ContentType:<s:property value="contentType"></s:property></li>
<li>UploadFileName:<s:property value="uploadFileName"/></li>
<li>File:<s:property value="upload" /></li>
<li>Caption:<s:property value="caption" /></li>
</ul>
</body>
</html>
index.jsp---的源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>首页</title>
</head>
<body>
文件上传的实例:
<a href="fileupload/upload.action" target="_blank">FileUpload</a>
</body>
</html>
分享到:
相关推荐
### Java Struts2入门学习实例——使用Struts2快速实现多个文件上传 #### 知识点一:配置Struts2中的错误提示信息 在开发基于Java的Web应用程序时,经常需要处理用户上传文件的需求。而Struts2框架因其灵活性与...
在"struts-2.3.33-all.zip"压缩包中,"apps"文件夹可能包含了用于演示或测试目的的应用程序实例,这些应用展示了如何在Struts 2框架中实现文件上传。在实际开发中,通常会有一个或多个Action类负责接收和处理文件...
2. **配置文件**:Struts2的配置文件通常为struts.xml,用于定义Action的映射、结果类型、拦截器等。通过XML或注解方式配置,灵活性高。 3. **拦截器(Interceptors)**:拦截器是Struts2实现AOP(面向切面编程)的...
本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...
`struts2-mailreader-2.0.1.war` 是一个模拟邮件阅读器的实例,展示了Struts2处理表单数据、文件上传、用户认证和授权的使用。它可以帮助开发者理解如何在Struts2中实现用户交互和数据管理。 3. **Struts2 Portlet...
该属性设定了Struts 2文件上传中整个请求内容的最大字节数限制,以防止过大的文件上传导致的问题。 #### struts.custom.properties 指定了Struts 2应用加载的用户自定义属性文件,自定义属性文件中的设置不会覆盖`...
这个实例代码提供了一个基本的文件上传解决方案,不依赖于特定的框架如Struts2的文件上传组件。以下是关于这个"文件上传实例-JAVA"的详细解释和相关知识点。 1. **文件上传的基本原理**: 文件上传通常涉及客户端...
1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`<result>`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...
在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...
`struts-plugin.xml`中需要引入`struts2-upload-plugin-2.x.x.jar`,该插件提供了文件上传的配置和处理逻辑。 4. **配置文件**:在`struts.xml`或`struts-default.xml`中,需要配置`params interceptor`和`...
这个"STRUTS2学习实例8"显然旨在深化对Struts2的理解和应用,通过具体的实战项目来教学。让我们深入探讨一下Struts2的关键概念和技术。 首先,Struts2的核心是Model-View-Controller(MVC)设计模式。MVC模式将应用...
在“struts2文件上传下载实例”中,我们将探讨如何在Struts2框架下实现文件的上传和下载功能,这对于许多Web应用程序来说是必不可少的特性。 首先,`pom.xml`文件是Maven项目对象模型的配置文件,它定义了项目的...
同时,可以利用Struts 2的插件功能,轻松地添加如文件上传、日期时间处理等复杂功能。 总之,Struts 2.5.16-all框架提供了一套完整的解决方案,帮助Java开发者构建高效、可维护的Web应用。通过深入学习和实践,你将...
- 这个压缩包中的"apps"目录可能包含各种Struts2的示例应用,例如登录注册、CRUD操作、文件上传下载等。 - 通过分析这些示例,学习者可以了解如何实际配置和使用Struts2的各种特性。 8. **学习与实践**: - 分析...
这个"struts2_上传下载"实例可能还包括了错误处理、多文件上传、限制上传大小、文件类型检查等更复杂的情况。通过这些示例,开发者可以学习如何在实际项目中安全、高效地实现文件上传和下载功能。
`lib`目录中的关键JAR文件包括`struts2-core-2.1.6.jar`(核心库)、`freemarker-2.3.13.jar`(用于UI标签的模板引擎)、`commons-logging-1.0.4.jar`(日志处理)、`ognl-2.6.11.jar`(对象图导航语言)、`xwork-...
本实例将详细讲解如何在Struts2中实现文件上传。 首先,理解文件上传的基本概念。在Web应用中,文件上传涉及到客户端(浏览器)和服务器端的交互。用户选择本地文件后,这些文件的数据会被转换成二进制流,封装在...
- `commons-fileupload-1.2.1.jar`:文件上传组件,确保能处理用户上传的文件。 3. **Struts2配置文件** - **web.xml**:这是Web应用的部署描述符,用于配置Struts2的过滤器`StrutsPrepareAndExecuteFilter`。...
在这个实例中,我们将深入探讨如何利用Struts2实现文件上传,并关注其配置细节。 首先,文件上传的核心类是`org.apache.struts2.servlet.multipart.FileUpload`,它是Struts2框架内置的多功能工具,可以处理HTTP...