Java Commons FileUpload如何将超过磁盘项工厂内存阈值的文件放入存储库?

Java Commons FileUpload如何将超过磁盘项工厂内存阈值的文件放入存储库?,java,apache-commons-fileupload,Java,Apache Commons Fileupload,我的印象是,如果使用Apache Commons FileUpload API上载的文件超过了Disk Item Factory对象声明/设置的内存阈值,它将进入临时存储这些文件的存储库。我的问题是它如何将这些文件放入存储库 这是我测试场景的代码 if (ServletFileUpload.isMultipartContent(request)) { DiskFileItemFactory diskFactory = new DiskFileItemFactory(); Serv

我的印象是,如果使用Apache Commons FileUpload API上载的文件超过了Disk Item Factory对象声明/设置的内存阈值,它将进入临时存储这些文件的存储库。我的问题是它如何将这些文件放入存储库

这是我测试场景的代码

if (ServletFileUpload.isMultipartContent(request)) {
    DiskFileItemFactory diskFactory = new DiskFileItemFactory();
    ServletFileUpload uploadHandler = new ServletFileUpload(diskFactory);
    diskFactory.setRepository(new File("/home/test/bin"));
    diskFactory.setSizeThreshold(5120);

    try {
        List<FileItem> fileList = uploadHandler.parseRequest(request);

        for (FileItem file : fileList) {
            if (!file.isFormField()) {
                String name = new File(file.getName()).getName();
                file.write(new File(
                    request.getServletContext().getInitParameter("UploadPath")
                    + File.separator + name));
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}        
if(ServletFileUpload.isMultipartContent(请求)){
DiskFileItemFactory diskFactory=新的DiskFileItemFactory();
ServletFileUpload uploadHandler=新的ServletFileUpload(diskFactory);
setRepository(新文件(“/home/test/bin”);
diskFactory.setSizeThreshold(5120);
试一试{
List fileList=uploadHandler.parseRequest(请求);
用于(文件项文件:文件列表){
如果(!file.isFormField()){
字符串名称=新文件(File.getName()).getName();
写入(新文件)(
request.getServletContext().getInitParameter(“UploadPath”)
+File.separator+name));
}
}
}捕获(文件上载异常){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
}
}        

我将内存阈值设置为5KB,并尝试上载一个13KB的文件。我的预期结果是,它将被放置在
/home/test/bin
目录中。但是它被放置在我为成功上载创建的上载目录路径中。

它被放置在成功上载路径中,因为您正在执行:
file.write(新文件(request.getServletContext().getInitParameter(“UploadPath”)+file.separator+name)


但是,库会自动删除临时文件。。。请参阅文件上载中的“资源Clenaup”部分

如果我禁用了FileCleaningTracker,是否必须将文件显式写入存储库?不,我相信库仍会为您将临时文件写入存储库。。。只是它们不会在没有干预的情况下自动删除(但我猜你必须试试这个)。。。