`
z_xiaofei168
  • 浏览: 200603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2文件上传的采用的三种方式解析

阅读更多

struts2文件上传的采用的三种方式解析

      文件上传几乎是每个项目实现的一个必须的模块。
    上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上,让
网络上的人都能看到。将制作好的网页、文字、图片等发布到互联网上去,以便让其他人浏览、欣赏。这一过程称为上传。

    JAVA实现文件上传的几个组件:
          1 SmartUpload 用的最多的一个组件,已经不再更新了,可以实现上传和下载   
          2 FileUpload Apache实现的文件上传组件,功能齐备   
          3 J2KUpload java2000实现的文件上传组件,全部使用内存,适合多个不超过10M的小文

    下面具体说说FileUpload Apache实现的文件上传组件。

1、/** 按copy方式上传  */

 

public String uploadFile(){
	/**保存的具体路径*/
	String savepath = getSavePath();
	/**根据保存的路径创建file对象*/
	File file = new File(savepath);
	if(!file.exists()){
		/**创建此文件对象路径*/
		file.mkdirs();
	}
	try {
		/**使用的是:org.apache.commons.io.FileUtils FileUtils*/
		FileUtils.copyFile(pic, new File(file,getPicFileName()));
	} catch (IOException e) {
		e.printStackTrace();
	}
	return SUCCESS;
}

 

 

备注:
        1、getSavePath()方法中,ServletActionContext().getServletContext().getRealPath

(savePath+"\\"+getPicFileName());    ,这个主要是一个文件的实际路径
     2、我个人认为这种方式是简单易用的。按copy方式上传使用的是Apache公司的

org.apache.commons.io.FileUtils包里的FileUtils.java。

 

 

2、/** 按字节方式上传  */

 

public String uploadFile(){		
	/** 文件的写操作 */ 
	FileInputStream fis = null; 
	FileOutputStream fos = null;
		/** 保存的路径 */
	String savepath = getSavePath();
	/** 根据保存的路径创建file对象 */
	File file = new File(savepath);
	/** file对象是否存在   */
	if (!file.exists()) {
		/** 创建此文件对象路径  */
		file.mkdirs();
	}
	try {
		/** 创建输入流 */
		fis = new FileInputStream(pic);
		/** 输出流 更据文件的路径+文件名称创建文件对象 */
		fos = new FileOutputStream(file + "//" + getPicFileName());
		/** 读取字节   */
		byte b[] = new byte[1024];
		int n = 0;
		/** 读取操作   */
		while ((n = fis.read(b)) != -1) {
			/** 写操作   */
			fos.write(b, 0, n);
		}
		/** 关闭操作  */
		if (fis != null) {
			fis.close();
		}
		if (fos != null) {
			fos.close();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return SUCCESS;
}

 

 

3、/** 按字符方式上传    即“三层管道”  */

 

public String uploadFile(){
	/** 文件的写操作 */
	BufferedReader br =null;
	BufferedWriter bw = null;	
 	/** 保存的路径 */
	String savepath = getSavePath();
	/** 根据保存的路径创建file对象   */
	File file = new File(savepath);
	/** file对象是否存在  */
	if (!file.exists()) {			
		/** 创建此文件对象路径  */
		file.mkdirs();
	}
	try {
		/**   创建一个BufferedReader  对象*/
		br = new BufferedReader(new InputStreamReader(new FileInputStream

(pic)));			
		bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream

(file + "//" + getPicFileName())));
			
		// 读取字节
		char b[] = new char[1024];
		int n = 0;
		// 读取操作
		while ((n = br.read(b)) != -1) {
			// 写操作
			bw.write(b, 0, n);
		}
		// 关闭操作
		if (br != null) {
			br.close();
		}
		if (bw != null) {
			bw.close();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return SUCCESS;
}

 

 

   备注:

       第二种上传方式没有第三种上传方式效率高。
   建议:

          最好用第一种方式上传,次之使用第三种方式上传,最后再使用第二种方式上传。

 

 

          大家有什么建议或是意见,可以给我提,我们共同学习,共同进步。

5
7
分享到:
评论

相关推荐

    struts2文件上传jar

    Struts2是一个流行的Java web框架,它为开发者提供了一种结构化的方式来构建MVC(Model-View-Controller)应用程序。在Struts2中,文件上传是常见的功能,用于允许用户在网页上上传文件到服务器。这个压缩包包含了...

    struts2文件上传的两种方法

    Struts2提供了两种主要的文件上传方式:单文件上传和多文件上传。下面将详细介绍这两种方法及其相关知识点。 一、单文件上传 1. **配置Struts2核心过滤器**:首先,需要在web.xml中配置`struts2-convention-plugin...

    struts2文件上传实例

    4. **文件解析**:Struts2支持两种方式处理文件上传:原生的Servlet API和Apache Commons FileUpload库。后者更为常用,因为它提供了更丰富的功能,如处理大文件分块上传、内存和磁盘存储策略等。在Action类中,你...

    Struts2多个文件上传

    Struts2本身并不包含一个内置的请求解析器来处理文件上传。相反,它依赖于第三方库,如Jakarta和Commons-FileUpload,来解析HTTP请求中的文件数据。Struts2对这些库进行了封装,使得文件上传的代码更加简洁,同时...

    struts2文件上传和下载

    4. **文件下载**: Struts2提供了一种简单的方式处理文件下载。在Action类中,你可以创建一个方法返回文件流。使用`response.setHeader()`设置HTTP响应头,如`Content-Disposition`来指定文件名,以及`Content-Type`...

    Struts2文件上传源码

    Struts2是一个流行的Java Web框架,它为开发者提供了一种优雅的方式来构建可维护、可扩展且结构清晰的Web应用程序。在Struts2中,文件上传是常见的功能之一,尤其是在处理用户提交表单时,比如上传图片、文档等。...

    struts2 文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户通过网页上传文件到服务器。Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传...

    struts2文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户从他们的本地计算机向服务器传输文件。在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将...

    Struts2之struts2文件上传详解案例struts011

    在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....

    struts2文件上传例子.rar

    在处理文件上传时,Struts2会使用`Commons FileUpload`库,这个库提供了解析多部分HTTP请求的能力。每个上传的文件会被封装成`FileItem`对象,我们可以遍历这些对象,对每个文件进行处理。例如,将文件保存到服务器...

    JavaEE Struts文件上传

    2. **添加Struts2插件**:Struts2的文件上传功能依赖于`struts2-convention-plugin`和`struts2-core`等库。在`struts.xml`配置文件中,需要启用Multipart解析器,例如添加`<constant name="struts.multipart.parser...

    Struts2.0 文件上传与下载全解析

    本篇文章将全面解析Struts2.0中的文件上传和下载流程。 ### 文件上传 文件上传的核心在于`multipart/form-data`编码类型,这是HTML表单用于上传文件的必需属性。在示例中,我们看到一个简单的Struts2表单,其中...

    struts2+jquery+ajax文件异步上传

    在文件上传场景中,Struts2主要负责接收前端发送的文件数据,并将这些数据存储到服务器的指定位置。配置Struts2的Action类和相应的XML配置文件,可以定义文件上传的处理逻辑。 接着,jQuery是一个高效、简洁的...

    Struts2文件上传程序示例

    Struts2文件上传程序是一个典型的企业级Web应用开发中的功能,它允许用户通过网页将本地文件上传到服务器。Struts2作为一款强大的MVC(Model-View-Controller)框架,提供了丰富的功能支持,包括文件上传。这个示例...

    struts2 文件上传 测试通过版

    Struts2是一个强大的Java web应用程序框架,它提供了一种组织和构建MVC(模型-视图-控制器)架构的方式。在Struts2中,文件上传功能是常见的需求,特别是在处理用户提交表单时,比如上传图片、文档等。本文将详细...

    struts2文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...

    struts2文件上传下载实例

    在“struts2文件上传下载实例”中,我们将探讨如何在Struts2框架下实现文件的上传和下载功能,这对于许多Web应用程序来说是必不可少的特性。 首先,`pom.xml`文件是Maven项目对象模型的配置文件,它定义了项目的...

    通过Servlet文件上传理解Struts2文件上传原理(附源码)

    Struts2框架利用了Servlet API,但提供了一种更抽象和灵活的方式来处理文件上传。它使用Interceptor(拦截器)机制,其中`FileUploadInterceptor`负责处理上传的文件。在Struts2配置中,你需要添加`params`和`...

    struts框架-文件上传下载

    2. Struts2中的文件上传:Struts2提供了更简洁的文件上传方式。在JSP页面中,可以使用`<s:file>`标签来创建文件选择控件。在Action类中,使用`@SkipValidation`注解标记文件上传方法,然后定义对应的`java.io.File`...

Global site tag (gtag.js) - Google Analytics