commons fileupload的DiskFileItemFactory

DiskFileItemFactory

1、DiskFileItemFactory该类的作用

将请求消息实体中的每一个项目都封装成一个DiskFileItem(DiskFileItem是FileItem接口的实现类)对象,这个任务就是DiskFileItemFactory实现的。

2、DiskFileItemFactory该类的属性

/**该属性是把文件保存在内存中还是磁盘上的临时文件夹的系统默认的临界值,10kb*/
public static final int DEFAULT_SIZE_THRESHOLD = 10240;
/**
如果需要保存的文件大于临界值,需要建立一个临时文件。
默认采用系统默认的临时文件路径,可以通过系统属性 java.io.tmpdir获取。
如代码:System.getProperty("java.io.tmpdir");
*/
private File repository;
/**文件保存在内存中还是磁盘临时文件夹的临界值,这个属性是为了用户自己设置临界值而设定的*/
private int sizeThreshold;
/**临时文件的跟踪器*/
private FileCleaningTracker fileCleaningTracker;

3、DiskFileItemFactory该类的方法

/**
空构造器
*/
public DiskFileItemFactory(){
        this(10240, null);
}
/**
带参构造
*/
public DiskFileItemFactory(int sizeThreshold, File repository){
    this.sizeThreshold = 10240;
    this.sizeThreshold = sizeThreshold;
    this.repository = repository;
}
/**
属性repository临时文件夹的set和get方法
*/
public File getRepository(){
    return repository;
}

public void setRepository(File repository){
    this.repository = repository;
}
/**
属性sizeThreshold的set和get方法
*/
public int getSizeThreshold(){
    return sizeThreshold;
}

public void setSizeThreshold(int sizeThreshold){
    this.sizeThreshold = sizeThreshold;
}
/**
 根据DiskFileItemFactory相关配置将每一个请求消息实体项目创建成DiskFileItem 实例,并返回。该方法从来不需要我们亲自调用,FileUpload组件在解析请求时内部使用。
*/
public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName){
    DiskFileItem result = new DiskFileItem(fieldName, contentType, isFormField, fileName, sizeThreshold, repository);
    FileCleaningTracker tracker = getFileCleaningTracker();
    if(tracker != null)
        tracker.track(result.getTempFile(), result);
    return result;
}
/**
FileCleaningTracker 的set和get方法
*/
public FileCleaningTracker getFileCleaningTracker(){
    return fileCleaningTracker;
}

public void setFileCleaningTracker(FileCleaningTracker pTracker){
    fileCleaningTracker = pTracker;
}

4、DiskFileItemFactory该类的使用

//创建上传文件句柄
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
//设置内存缓冲区的大小,超过该值将文件放在磁盘临时文件夹中
diskFileItemFactory.setSizeThreshold(1024*4);
//设置磁盘临时文件夹的位置
diskFileItemFactory.setRepository(new File("F:\\uploadFileTemp"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值