`

文件上传,使用Apache组件上传文件

阅读更多
使用Apache文件上传组件来接受浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中的三个类:DisFileUpload, FileItem和FileUploadException。这三个类全部位于org.apache.commons.fileupload包中

1.DiskFileUpload类DiskFileUpload类是Apache文件上传组件的核心类,应用程序开发人员通过这个类来与Apache文件上传组件进行交互。但现在Apache建议使用ServletFileUpload类,两个类的方法类似。

2.setSizeMax方法setSizeMax方法用于设置请求消息实体内容的最大允许大小,单位是字节。防止客服端恶意通过上传特大的文件来塞满服务器端的存储空间。其完整的语法定义如下:
  public void setSizeMax(Long sizeMax)
如果请求消息中的实体内容的大小超过了setSizeMax 方法的使者值,改方法将会抛出FileUploadException异常

3.setSizeThreshold方法Apache文件上传组件在解析和处理上传数据中的每个字段内容时,需要临时保存解析出的数据。因为Java虚拟机默认可以使用的内存空间是有限的(不大于100M)
setSizeThreshold方法用于设置是否使用临时文件保存解析出的数据的那个临界值,改方法传入的参数的单位是字节,其完整语法定义如下:
public void setSizeThreshold(int sizeThreshold)

4.setRepositoryPath方法setRepositoryPath方法用于设置setSizeThreshold方法中提到的临时文件的存放目录,这里要求使用绝对路径

5.parseRequest方法parseRequest方法是DiskFileUpload类的重要重要方法,它是对Http请求消息进行解析的入口方法,如果请求消息中的实体内容的类型不是“multipart/form-date”改方法将抛出FileUploadException异常

6.setHeaderEncoding方法设置字符编码

7.FileItem类FileItem类是用来封转单个表单字段元素的数据,一个表单字段元素对应一个FileItem对象,通过调用FileItem对象的方法可以获得相关表单字段元素的数据。FileItem是一个借口,在应用程序中使用的实际是改接口的一个实现类,FileItem类还实现了Serializable接口,以支持序列化操作

8.isFormField方法isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,如果是普通表单字段则返回true,否则返回false

9.getName方法getName方法用于获取文件上传字段中的文件名



看下面具体代码:

public class FileUploadUntil {

    public Map parameters;

    public Map files;

    private long sizeMax = -1;
   
    private int sizeThreshold = DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD;// 系统值
   
public void parse(HttpServletRequest request){

        parameters = new HashMap();

        files = new HashMap();

        DiskFileItemFactory factory = new DiskFileItemFactory();

        factory.setSizeThreshold(sizeThreshold); //设置临时保存解析出的数据大小

        ServletFileUpload upload = new ServletFileUpload(factory);//Apache组建文件上传的核心类

        upload.setSizeMax(sizeMax);//设置上传大小限制

        upload.setHeaderEncoding(encoding); //设置字符编码

        try {

            List items = upload.parseRequest(request); //解析表单提交类型

            Iterator iterator = items.iterator();

            while(iterator.hasNext()){

                FileItem item = (FileItem)iterator.next(); //通过调用FileItem对象的方法可以获得相关表单字段元素的数据

                if(item.isFormField()){ //判断是否是正常的表单提交方式                  

                    String fieldName = item.getFieldName();

                    String value = item.getString();

                    parameters.put(fieldName, value);

                }else{

                    String fieldName = item.getFieldName();

                    files.put(fieldName, item);

                }

            }

        } catch (FileUploadException e) {
            e.printStackTrace();              
            this.setUploadError(true);
        }

}

    public String getFileName(FileItem item){

        String fileName = item.getName();
        fileName = this.replace(fileName,"\\", "/");
        fileName = fileName.substring(fileName.lastIndexOf("/")+1);

        return fileName;

    }
}
分享到:
评论
1 楼 mdusa_java 2013-06-09  
 

相关推荐

    jsp+servlet文件上传,非apache组件

    本教程将探讨如何使用纯JSP(JavaServer Pages)和Servlet技术来实现文件上传,而不依赖Apache的文件上传组件,如Commons FileUpload。 首先,我们需要了解JSP和Servlet的基本概念。JSP是用于创建动态网页的Java...

    Apache文件上传组件jar包

    在Java Web应用中,无论是简单的表单提交还是复杂的文件上传需求,Apache文件上传组件都能提供强大的支持。 标题中提到的"Apache文件上传组件jar包"实际上是指Apache Commons FileUpload库,它是一个开源项目,是...

    使用fileupload组件实现文件上传功能

    使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...

    基于apache commons.fileupload的文件上传组件,改进了上传速度

    本实现抽取了apache commons.fileupload的最基本代码,组合成一个简单的文件上传组件,对parseRequest方法进行了改进,对于文件,直接存储到指定的上传目录,加快了上传速度。使用本程序时,注意上传端的参数设置,...

    apache上传组件

    在描述中提到了与JSP SmartUpload的比较,SmartUpload也是一个广泛使用的文件上传库,但Apache上传组件可能提供了类似的特性,并且在某些方面可能具有更好的性能或易用性。 Apache上传组件的核心功能包括: 1. **...

    Apache文件上传组件工作流程.bmp

    Apache文件上传组件工作流程,希望对大家有帮助

    文件上传组件_Apache_Commons_FileUpload_应用指南.pdf

    本文档主要介绍了 Apache Commons FileUpload 组件的应用指南,旨在帮助开发者快速了解和使用该组件实现文件上传功能。 一、为什么需要文件上传组件? 几乎每一个 Web 应用中都需要为用户提供文件上传的功能,例如...

    apache文件上传_apache文件上传_

    本篇文章将深入探讨Apache Commons FileUpload组件的使用,以及在Java Web环境中如何进行文件上传。 首先,Apache Commons FileUpload组件是一个专门处理HTTP请求中的多部分/形式数据(通常用于文件上传)的库。它...

    性能最好的Java文件上传组件

    Apache Commons FileUpload是Java社区广泛使用的文件上传组件,它允许开发者轻松地处理HTTP请求中的多部分表单数据,包括文件上传。然而,对于云存储的集成,我们通常需要结合云服务商提供的SDK,比如腾讯云的Java ...

    Java 文件上传组件 Apache Commons FileUpload 应用指南

    Apache Commons FileUpload 是一个强大的 Java 库,专为处理 HTTP 请求中的文件上传而设计。它遵循 RFC1867 规范,使得在服务器端处理文件上传变得简单易行。以下是对 FileUpload 组件的详细解释及其应用指南: 1. ...

    Apache 文件上传

    Apache Commons FileUpload组件是Java领域处理文件上传的常用工具库,它使得开发者能够轻松地处理HTTP协议中的多部分表单数据。本篇文章将深入探讨Apache FileUpload的工作原理和使用方法。 1. **多部分表单数据** ...

    基于apache commons.fileupload的文件上传组件

    在创建一个基于Apache Commons FileUpload的文件上传组件时,通常会包含以下步骤: 1. 创建`DiskFileItemFactory`实例。 2. 使用工厂创建`ServletFileUpload`实例,设置大小限制。 3. 解析`HttpServletRequest`对象...

    java文件上传组件包

    "java文件上传组件包"正是这样一套工具集,旨在简化Java开发中的文件上传流程。 在Java中处理文件上传,主要涉及以下知识点: 1. **Servlet API**:在服务器端,Servlet API是处理HTTP请求的基础。`javax.servlet....

    jsp 文件 上传 组件

    总结,JSP文件上传组件通常涉及JSP页面设计、Servlet处理以及第三方库如Apache Commons FileUpload的使用。理解这些知识点,开发者就能构建出健壮且安全的文件上传功能。在实际应用中,务必注意文件上传的安全性,...

    JAVAWeb文件上传组件

    以上就是关于“JAVAWeb文件上传组件”的基本介绍,包括Apache Commons FileUpload和Commons IO的作用以及它们在Struts2框架中的使用。通过理解这些知识点,开发者可以有效地实现在Java Web应用中处理文件上传的需求...

    JSP文件上传JavaBean组件

    在Java环境中,为了简化文件上传的复杂性,通常会使用JavaBean组件来处理文件上传的操作。本文将详细讲解“JSP文件上传JavaBean组件”的相关知识点。 首先,理解JavaBean组件。JavaBean是一种符合特定规范的Java类...

Global site tag (gtag.js) - Google Analytics