`

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

 
阅读更多

 

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

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

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

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

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

 

Java代码   收藏代码
  1. public String uploadFile(){  
  2.     /**保存的具体路径*/  
  3.     String savepath = getSavePath();  
  4.     /**根据保存的路径创建file对象*/  
  5.     File file = new File(savepath);  
  6.     if(!file.exists()){  
  7.         /**创建此文件对象路径*/  
  8.         file.mkdirs();  
  9.     }  
  10.     try {  
  11.         /**使用的是:org.apache.commons.io.FileUtils FileUtils*/  
  12.         FileUtils.copyFile(pic, new File(file,getPicFileName()));  
  13.     } catch (IOException e) {  
  14.         e.printStackTrace();  
  15.     }  
  16.     return SUCCESS;  
  17. }  

 

 

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

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

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

 

 

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

 

Java代码   收藏代码
  1. public String uploadFile(){       
  2.     /** 文件的写操作 */   
  3.     FileInputStream fis = null;   
  4.     FileOutputStream fos = null;  
  5.         /** 保存的路径 */  
  6.     String savepath = getSavePath();  
  7.     /** 根据保存的路径创建file对象 */  
  8.     File file = new File(savepath);  
  9.     /** file对象是否存在   */  
  10.     if (!file.exists()) {  
  11.         /** 创建此文件对象路径  */  
  12.         file.mkdirs();  
  13.     }  
  14.     try {  
  15.         /** 创建输入流 */  
  16.         fis = new FileInputStream(pic);  
  17.         /** 输出流 更据文件的路径+文件名称创建文件对象 */  
  18.         fos = new FileOutputStream(file + "//" + getPicFileName());  
  19.         /** 读取字节   */  
  20.         byte b[] = new byte[1024];  
  21.         int n = 0;  
  22.         /** 读取操作   */  
  23.         while ((n = fis.read(b)) != -1) {  
  24.             /** 写操作   */  
  25.             fos.write(b, 0, n);  
  26.         }  
  27.         /** 关闭操作  */  
  28.         if (fis != null) {  
  29.             fis.close();  
  30.         }  
  31.         if (fos != null) {  
  32.             fos.close();  
  33.         }  
  34.     } catch (Exception e) {  
  35.         e.printStackTrace();  
  36.     }  
  37.     return SUCCESS;  
  38. }  

 

 

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

 

Java代码   收藏代码
  1. public String uploadFile(){  
  2.     /** 文件的写操作 */  
  3.     BufferedReader br =null;  
  4.     BufferedWriter bw = null;     
  5.     /** 保存的路径 */  
  6.     String savepath = getSavePath();  
  7.     /** 根据保存的路径创建file对象   */  
  8.     File file = new File(savepath);  
  9.     /** file对象是否存在  */  
  10.     if (!file.exists()) {             
  11.         /** 创建此文件对象路径  */  
  12.         file.mkdirs();  
  13.     }  
  14.     try {  
  15.         /**   创建一个BufferedReader  对象*/  
  16.         br = new BufferedReader(new InputStreamReader(new FileInputStream  
  17.   
  18. (pic)));              
  19.         bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream  
  20.   
  21. (file + "//" + getPicFileName())));  
  22.               
  23.         // 读取字节  
  24.         char b[] = new char[1024];  
  25.         int n = 0;  
  26.         // 读取操作  
  27.         while ((n = br.read(b)) != -1) {  
  28.             // 写操作  
  29.             bw.write(b, 0, n);  
  30.         }  
  31.         // 关闭操作  
  32.         if (br != null) {  
  33.             br.close();  
  34.         }  
  35.         if (bw != null) {  
  36.             bw.close();  
  37.         }  
  38.     } catch (Exception e) {  
  39.         e.printStackTrace();  
  40.     }  
  41.     return SUCCESS;  
  42. }  

 

 

   备注:

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

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

 

 

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

分享到:
评论

相关推荐

    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