`
jeelee
  • 浏览: 637050 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts 上传文件

阅读更多
1,action类:
/**
 * 
 */
package org.jeelee.action;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.util.Date;

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author JeeLee
 *
 */
public class UploadFileAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private static final int BUFFER_SIZE = 16*1024;
	private File myFile ;
	private String contentType ;
	private String fileName ;
	private String caption ;
	private String imageFileName ;
	/**
	 * 用struts2标签<s:file/>实现上传文件要注意:
	 * <s:file name="xxx" />对应Action类里面的xxx、xxxContentType和xxxFileName三个属性
	 */
	public UploadFileAction() {
		// TODO Auto-generated constructor stub
	}
	
	/**
	 * 这个方法很关键,要想实现上传文件,这个方法是必须的(上传文件的MIME类型),
	 * 它是由<s:file/>标签绑定的:set+file标签名+FileContentType
	 * @author JeeLee
	 * @param contentType
	 */
	public void setMyFileContentType(String contentType)
	{
		this.contentType = contentType ;
	}
	/**
	 * 这个方法很重要,要想实现上传文件,这个方法是必须的(上传文件的文件名,该文件名不包括文件的路径),
	 * 它是由<s:file/>标签绑定的:set+file标签名+FileName
	 * @author JeeLee
	 * @param fileName
	 */
	public void setMyFileFileName(String fileName)
	{
		this.fileName = fileName ;
	}
	
	
	public String getMyFileContentType()
	{
		return contentType ;
	}
	
	public String getMyFileFileName()
	{
		return fileName ;
	}
	
	public void setMyFile(File myFile)
	{
		this.myFile = myFile ;
	}
	
	public File getMyFile()
	{
		return myFile ;
	}
	
	public void setCaption(String caption)
	{
		this.caption = caption ;
	}
	
	public String getCaption()
	{
		return caption ;
	}
	
	public void setImageFileName(String imageFileName)
	{
		this.imageFileName = imageFileName ;
	}
	
	public String getImageFileName()
	{
		return imageFileName ;
	}
	
	/**
	 * 复制文件
	 * @author JeeLee
	 * @param srcFile
	 * @param desFile
	 */
	public void copyFile(File srcFile,File desFile)
	{
		
		InputStream in = null ;
		OutputStream out = null ;
		
		try
		{
			in = new BufferedInputStream(new FileInputStream(srcFile),BUFFER_SIZE) ;
			out = new BufferedOutputStream(new FileOutputStream(desFile),BUFFER_SIZE) ;
			
			byte[] buffer = new byte[BUFFER_SIZE];
			while(in.read(buffer)>0)
			{
				out.write(buffer) ;
			}
		}
		catch(IOException e)
		{
			System.out.println("读取文件错误:"+e);
		}
		finally
		{
			try
			{
				if(in!=null)
				{
					in.close();
				}
				if(out!=null){
					out.close();
				}
			}
			catch(IOException e)
			{
				System.out.println("关闭文件失败:"+e);
			}
		}
	}

	/**
	 * 获得文件扩展名
	 * @author JeeLee
	 * @param fileName
	 * @return
	 */
	public String getExtention(String fileName)
	{
		System.out.println("file name ="+fileName);
		int pos = fileName.lastIndexOf(".");
		
		return fileName.substring(pos) ;
	}
	
	/**
	 * 上传文件的action
	 * @author JeeLee
	 * @return
	 */
	public String uploadFile()
	{
		 String imgFile;
		 System.out.println("test------------------");
		 imageFileName = new Date().getTime() + getExtention(fileName);
		 imgFile = ServletActionContext.getServletContext().getRealPath("/pic")+"/"+imageFileName ;
		 System.out.println("imgFile=="+imgFile);
		 File imageFile = new File(imgFile);
		 
		 copyFile(myFile,imageFile) ;
		 
		 return "UPLOAD:SUCCESS" ;
	}
	
	public String deleteFile()
	{
		myFile.delete();
		
		return "DELETE:SUCCESS" ;
	}
	
	/*@Override
	public String execute()
	{
		 imageFileName = new Date().getTime() + getExtention(fileName);
		 File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/pic")+"/"+imageFileName);
		 
		 copyFile(file,imageFile) ;
		 
		 return SUCCESS ;
		 
	}*/

}


2,struts.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>
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<package name="jeelee" extends="struts-default">
    	<!--上传文件-->
    	<action name="uploadFile" class="org.jeelee.action.UploadFileAction">
    		<result name="UPLOAD:SUCCESS">showUploadFile.jsp</result>
    		<result name="DELETE:SUCCESS">showUploadFile.jsp</result>
    	</action>
	</package>	
</struts>	


3,JSP文件:
上传页面:loadfile.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" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>struts2 上传文件</title>
</head>
<body>
<s:form action="uploadFile.action" enctype ="multipart/form-data" >
	<s:file name="myFile" label="上传文件"></s:file>
	<s:textfield name="fileName" label="caption"></s:textfield>
	<s:submit name="ccc" method="uploadFile" value="上传"></s:submit>
	<s:submit name="ddd" method="deleteFile" value="删除"></s:submit>
</s:form>
</body>
</html>

显示结果页面:
<%@ 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" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>struts2 上传文件结果显示</title>
</head>
<body>
 <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" > 
	<img src ='<s:property value ="imageFileName" />' />
	<br /> 
	<s:property value ="caption" /> 
</div > 

</body>
</html>
分享到:
评论

相关推荐

    struts上传文件(图片/附件)

    struts上传文件(图片/附件),希望对初学struts的同学们有帮助。如果有事么不足,请大家多指教。

    ajax Struts 上传文件

    本项目以"ajax Struts 上传文件"为主题,通过Ajax调用Struts的Action来实现文件的无刷新上传。 无刷新上传文件是一种用户友好的功能,它允许用户在不重新加载整个网页的情况下上传文件,极大地提高了交互性。在这个...

    EasyUI和Struts上传文件的例子

    总结来说,这个"EasyUI和Struts上传文件的例子"涉及到的技术点包括:Struts2框架的Action配置与文件处理,EasyUI的表单和进度条组件,多部分表单数据处理,以及JRE1.7的文件操作API。通过这个示例,开发者可以学习...

    struts上传文件及下载

    在"struts上传文件及下载"的主题中,我们将深入探讨如何使用Struts2实现文件的上传与下载功能,以及如何将上传的文件存储到数据库并从数据库中检索用于下载。 1. **文件上传** - **Action配置**:首先,你需要创建...

    JavaEE Struts文件上传

    Struts框架通过解析这个格式化的请求,可以获取到上传文件的信息。 1. **配置Struts2 Action**:在Struts2中,我们需要创建一个Action类来处理文件上传请求。这个类通常需要实现`ServletRequestAware`接口,以便...

    struts2实现文件上传下载

    `FileInfo`是自定义的类,包含`File`对象和`String`对象,分别表示上传文件的实际内容和文件名。 1. **配置Struts2的文件上传** 在`struts.xml`配置文件中,为需要支持文件上传的Action添加`params`和`fileUpload`...

    Struts上传文件

    以下是对“Struts上传文件”这一主题的详细讲解。 1. **Struts 2文件上传组件**: Struts 2 提供了 `org.apache.struts2.components.File` 组件来处理文件上传。这个组件可以与表单元素结合,使用户能够选择要上传...

    struts上传文件.doc

    struts上传文件.doc

    struts上传文件

    Struts上传文件是Java Web开发中常见的一种功能,主要用于允许用户从客户端浏览器向服务器传输文件。在Struts框架中,文件上传涉及到MVC设计模式、Model2模式以及Struts的工作流程。下面将详细解释这些知识点。 **...

    Struts上传文件实现代码

    在上述代码中,我们限制了最大上传文件大小为5MB,并将文件保存到了服务器的一个特定目录。为了防止路径遍历攻击,应使用相对路径或者绝对路径,并确保路径安全。 最后,前端页面(例如upload.jsp)需要包含一个...

    jsp+struts文件上传

    2. 创建上传文件的JSP页面。 3. 编写Action类,使用Apache Commons FileUpload处理文件。 4. 验证和保存上传的文件。 5. 显示上传结果。 通过这种方式,你可以构建一个灵活且易于维护的文件上传系统。记住,文件...

    struts实现文件上传功能

    1. **配置Struts2**: 首先,需要在struts.xml配置文件中启用文件上传插件,并设置最大上传文件大小。 ```xml &lt;constant name="struts.multipart.maxSize" value="10485760"&gt;&lt;/constant&gt; &lt;!-- 10MB --&gt; ...

    使用struts上传文件

    在本文中,我们将深入探讨如何在Struts中实现文件上传,并结合`SetCharacterEncodingFilter.java`这个文件名,讨论字符编码的重要性。 首先,文件上传在Web应用中是一个常见的需求,例如用户可能需要上传头像、简历...

    struts框架-文件上传下载

    3. 文件存储位置:确保上传文件存储在安全目录下,避免用户访问到其他敏感文件。 4. 下载安全:对于下载,应避免直接暴露文件路径,使用动态生成的文件名,防止恶意用户猜测其他文件地址。 四、优化策略 1. 断点...

    struts1的文件上传

    配置文件中可以指定上传文件的存储路径,例如在struts-config.xml中定义一个action-mapping,设置其`parameter`属性为文件上传的目录。为了更好地管理上传的文件,可以考虑创建多级目录结构,如按照日期或用户ID来...

    struts2文件上传下载源代码

    文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`元素,用户可以选择本地文件。Struts2的Action类会接收这个文件,并使用`Commons ...

    struts2上传文件进度条显示

    struts2上传文件的进度条显示,绝对可用! 所达到效果 1.显示总文件大小 2.显示已上传文件大小 3.显示当前进度(百分比控制) 4.显示剩余上传时间 5.显示当前速度 (本人研究了很久才搞出来的,希望大家指教...

    出血推荐-使用Struts上传文件

    以上代码中,我们获取了上传文件的临时路径,验证了文件大小和类型,然后将其保存到服务器的指定位置。注意,实际操作中还需要处理可能出现的异常,以及进行必要的安全检查。 总结一下,使用 Struts 实现文件上传...

Global site tag (gtag.js) - Google Analytics