`

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下载.pdf

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

    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包

    DiskFileItemFactory实现文件上传 FileInputStream

    java用DiskFileItemFactory实现文件上传 FileInputStream下载; 代码实例,测试通过

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

    DiskFileItemFactory需要的jar包commons-fileupload-1.3.jar和commons-io-1.2.jar,用于文件上传。

    上传文件+ajax进度条

    FileItemFactory factory = new DiskFileItemFactory(); // 通过该工厂对象创建ServletFileUpload对象 ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(request); ...

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

    上传下载所需jar包,commons-fileupload-1.3.1.jar和commons-io-2.4.jar

    Servlet上传文件

    sevlet批量上产文件,1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包 * 2) 利用 request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同 * 3)对 ...

    file java 上传 下载

    DiskFileItemFactory 是创建 FileItem 对象的工厂,这个工厂类常用方法: public void setSizeThreshold(int sizeThreshold) 设置内存缓冲区的大小,默认值为10K。当上传文件大于缓冲区大小时, fileupload组件将...

    Jsp文件上传下载(工具类源码)

    DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘 dfif.setRepository(new File...

    FileUpload

    jQuery-File-Upload-9.5.7 文件上传 DiskFileItemFactory ServletFileUpload

    flex中的文件上传(简单例子)

    DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(maxPostSize); try { ...

    jspsmartupload

    DiskFileItemFactory factory = new DiskFileItemFactory(); /**设置最大的内存大小*/ factory.setSizeThreshold(4096); /**创建一个新的文件上传操作*/ ServletFileUpload upload = new ServletFileUpload...

    文件上传代码

    FileItemFactory factory = new DiskFileItemFactory(); // 处理文件上传核心类 ServletFileUpload fileUpload = new ServletFileUpload(factory); // 设置文件上传类的编码格式 fileUpload....

    ognl源码包值得用一用

    DiskFileItemFactory factory = new DiskFileItemFactory(); String path = request.getRealPath("/upload"); factory.setRepository(new File(path)); // 1mb factory.setSizeThreshold(1024 * 1024); ...

    JSP-文件图片上传-fileupload组件-commons-upload

    &lt;% DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try {List items = upload.parseRequest(request);Iterator itr = items.iterator(); ...

    Apache Commons fileUpload实现文件上传

    最简单的例子,通过ServletFileUpload静态类来解析Request,工厂类FileItemFactory会对mulipart类的表单中的所有字段进行处理,不只是file字段。getName()得到文件名,getString()得到表单数据内容,isFormField...

    java通过js上传文件

    import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUpload extends HttpServlet { protected void doPost...

    severlet文件上传、下载代码

    servlet实现文件的上传和下载,使用包为: import org.apache.commons....import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;

Global site tag (gtag.js) - Google Analytics