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

DiskFileItemFactory类

阅读更多

转自:http://blog.csdn.net/chinaliuyan/article/details/7002016

        将请求消息实体中的每一个项目封装成单独的DiskFileItem (FileItem接口的实现) 对象的任务
由 org.apache.commons.fileupload.FileItemFactory 接口的默认实现
org.apache.commons.fileupload.disk.DiskFileItemFactory 来完成。当上传的文件项目比较小时,直接保存在内存中(速度比较快),比较大时,以临时文件的形式,保存在磁盘临时文件夹(虽然速度慢些,但是内存资源是有限的)。

属性
1) public static final int DEFAULT_SIZE_THRESHOLD :将文件保存在内存还是磁盘临时文件夹的默认临界值,值为10240,即10kb。

2) private File repository:用于配置在创建文件项目时,当文件项目大于临界值时使用的临时文件夹,默认采用系统默认的临时文件路径,可以通过系统属性 java.io.tmpdir获取。如下代码:

System.getProperty("java.io.tmpdir");

3) private int sizeThreshold:用于保存将文件保存在内存还是磁盘临时文件夹的临界值

构造方法
1) public DiskFileItemFactory()

      采用默认临界值和系统临时文件夹构造文件项工厂对象。

2) public DiskFileItemFactory(int sizeThreshold,File repository)

      采用参数指定临界值和系统临时文件夹构造文件项工厂对象。

3) FileItem createItem()
       根据DiskFileItemFactory相关配置将每一个请求消息实体项目创建成DiskFileItem 实例,并返回。该方法从来不需要我们亲自调用,FileUpload组件在解析请求时内部使用。

4) void setSizeThreshold(int sizeThreshold)
        Apache文件上传组件在解析上传数据中的每个字段内容时,需要临时保存解析出的数据,以便在后面进行数据的进一步处理(保存在磁盘特定位置或插入数据库)。因为Java虚拟机默认可以使用的内存空间是有限的,超出限制时将会抛出“java.lang.OutOfMemoryError”错误。如果上传的文件很大,例如800M的文件,在内存中将无法临时保存该文件内容,Apache文件上传组件转而采用临时文件来保存这些数据;但如果上传的文件很小,例如600个字节的文件,显然将其直接保存在内存中性能会更加好些。

        setSizeThreshold方法用于设置是否将上传文件已临时文件的形式保存在磁盘的临界值(以字节为单位的int值),如果从没有调用该方法设置此临界值,将会采用系统默认值10KB。对应的getSizeThreshold() 方法用来获取此临界值。

5) void setRepository(File repository)
        setRepositoryPath方法用于设置当上传文件尺寸大于setSizeThreshold方法设置的临界值时,将文件以临时文件形式保存在磁盘上的存放目录。有一个对应的获得临时文件夹的 File getRespository() 方法。

         注意:当从没有调用此方法设置临时文件存储目录时,默认采用系统默认的临时文件路径,可以通过系统属性 java.io.tmpdir 获取。如下代码:

System.getProperty("java.io.tmpdir");

Tomcat系统默认临时目录为“<tomcat安装目录>/temp/”。

分享到:
评论
3 楼 tecwang 2015-07-30  
   
2 楼 Yimmm 2015-07-16  
            
1 楼 qmgrx2007 2015-06-30  
 
引用

相关推荐

    DiskFileItemFactory实现文件上传 FileInputStream

    `DiskFileItemFactory`是FileUpload组件的核心工厂类,它负责创建`DiskFileItem`对象。`DiskFileItem`是一个实现了`FileItem`接口的类,用于处理临时存储上传文件到内存或磁盘的逻辑。当上传文件大小超过预设阈值时...

    09_尚硅谷_文件的上传和下载_王振国 - 课堂笔记1

    * DiskFileItemFactory类,用于创建FileItemFactory工厂实现类。 ServletFileUpload类提供了许多有用的方法,例如: * boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);判断当前上传的...

    DiskFileItemFactory实现文件上传FileInputStream下载.pdf

    DiskFileItemFactory是Apache Commons FileUpload组件中的一个类,用于创建和管理FileItem实例。FileItem可以表示表单中的一个文件字段。DiskFileItemFactory通过内部的磁盘存储机制来创建FileItem实例,使得文件...

    通讯录web版

    至于文件上传下载功能,可能使用了Servlet的FileItem接口和DiskFileItemFactory类来处理。 在开发过程中,为了确保项目的质量和可测试性,开发者可能还使用了单元测试框架如JUnit对Servlet和DAO(Data Access ...

    基于servlet+jsp 的文章管理系统.zip

    这部分可能使用了Servlet的FileItem接口和DiskFileItemFactory类来处理上传文件,同时提供下载链接供用户下载附件。 7. **安全机制**:包括用户密码加密存储、防止SQL注入和XSS攻击等,确保系统安全稳定运行。 8. ...

    DiskFileItemFactory需要的jar包commons-fileupload-1.3.jar和commons-io-1.2.jar

    解析multipart/form-data表单,使用DiskFileItemFactory ServletFileUpload 类需要的commons-fileupload-1.3.jar和commons-io-1.2.jar包

    Java FileUploadUtil工具类详解

    该库提供了一个DiskFileItemFactory类,用于创建文件项目工厂。文件上传机制可以分为以下几个步骤: * 创建文件项目工厂:使用DiskFileItemFactory类创建文件项目工厂。 * 设置文件上传限制:设置文件上传的限制,...

    commons-fileupload-1.3.1.jar=DiskFileItemFactory等上传下载jar包

    Apache Commons FileUpload的核心组件之一是`DiskFileItemFactory`,这是文件项工厂类,负责创建`FileItem`对象。`FileItem`对象代表了HTTP请求中的一个字段,无论是普通文本还是上传的文件。`DiskFileItemFactory`...

    JavaWeb如何实现本地文件上传功能

    需要下载两个 jar 包:commons-fileupload-1.4.jar 和 commons-io-2.6.jar,然后使用 FileUpload 组件中的 FileItem 接口、DiskFileItemFactory 类和 ServletFileUpload 类实现文件上传。 实现代码 下面是实现代码...

    JSP组件commons-fileupload实现文件上传

    而***mons.fileupload.disk.DiskFileItemFactory类负责创建FileItem对象,它使用磁盘空间来存储文件数据。 ServletFileUpload类是处理上传请求的主要工具。开发者需要创建一个ServletFileUpload实例,并通过它可以...

    DiskFileItemFactory需要的jar包commons-fileupload-1.3.jar和commons-io-1.2.jar(文件上传)

    例如,DiskFileItemFactory是这个库中的一个关键类,它负责创建DiskFileItems,这些对象代表了上传的文件。通过配置DiskFileItemFactory,开发者可以自定义如何在磁盘上存储未处理的文件数据。 Apache Commons IO是...

    JAVA类说明文档

    import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.lizhou.exception.FileFormatException; import ...

    图片的上传下载及工具类

    本文将详细讲解如何实现图片的上传与下载,并介绍一个实用的工具类`UpOrDownLoadUtil.java`。 首先,我们来探讨图片上传的过程。在Web应用中,通常用户通过表单提交图片文件到服务器。这个过程涉及到前端和后端两个...

    java基于commons文件上传工具类

    下面我们将深入探讨如何使用Apache Commons FileUpload创建一个基于Java的文件上传工具类。 首先,我们需要引入Apache Commons FileUpload和Apache Commons IO库。这两个库可以通过Maven或Gradle添加为依赖,或者...

    commons-fileupload的优化实用类

    `commons-fileupload`库的核心在于其`DiskFileItemFactory`和`ServletFileUpload`类。`DiskFileItemFactory`负责创建`FileItem`对象,而`ServletFileUpload`则用于解析请求中的多部分数据。`UploadForm`和`...

    org.apache.commons.fileupload.DiskFileUpload使用上

    这个类实现了基于磁盘的文件上传存储策略,当上传文件大小超过内存阈值时,它会将文件内容写入到磁盘上的临时文件。 1. `setSizeMax` 方法: 这个方法用来设置允许的最大文件上传大小,以防止恶意用户通过上传大...

Global site tag (gtag.js) - Google Analytics