DiskFileItemFactory

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

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

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

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

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

构造方法
1) public DiskFileItemFactory()
spa

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

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/”。

相关文章
相关标签/搜索