Java 文件上传-使用apache';s DiskFileItemFactory和ServletFileUpload.parseRequest

Java 文件上传-使用apache';s DiskFileItemFactory和ServletFileUpload.parseRequest,java,file-upload,memory-leaks,apache-commons-fileupload,Java,File Upload,Memory Leaks,Apache Commons Fileupload,我有下面的遗留代码,这是作为我们的文件上传过程的一部分使用 HttpServletRequest httpRequest = (HttpServletRequest) request; List<FileItem> uploadedFiles = new ArrayList<FileItem>(); try { // File size settings excluded here DiskFileItemFacto

我有下面的遗留代码,这是作为我们的文件上传过程的一部分使用

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    List<FileItem> uploadedFiles = new ArrayList<FileItem>();
    try {
        // File size settings excluded here
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        uploadedFiles = upload.parseRequest(httpRequest);
HttpServletRequest-httpRequest=(HttpServletRequest)请求;
List uploadedFiles=new ArrayList();
试一试{
//此处不包括文件大小设置
DiskFileItemFactory=新的DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
uploadedFiles=upload.parseRequest(httpRequest);
我正在重温这段代码,我担心文件清理。鉴于DiskFileItemFactory中从未设置FileCleaningTracker,我假设这些文件从未被删除,但javadocs中我并不清楚。具体地说,我不确定它们使用“自动”是否意味着文件清理是开箱即用的

临时文件一经删除,将自动删除 需要更长的时间。(更准确地说,当 java.io.File被垃圾收集。)清理这些文件由 FileCleaningTracker的实例和关联的线程

在FileItemFactory类型为DiskFileItemFactory的情况下,使用ServletFileUpload解析HttpServletRequest的正确方法是什么?我想确保没有内存泄漏

我倾向于做出以下改变,但我对这一点没有信心

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    List<FileItem> uploadedFiles = new ArrayList<FileItem>();
    try {
        // File size settings excluded here
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setFileCleaningTracker(FileCleanerCleanup.getFileCleaningTracker(httpRequest.getSession().getServletContext()));
        ServletFileUpload upload = new ServletFileUpload(factory);
        uploadedFiles = upload.parseRequest(httpRequest);           
HttpServletRequest-httpRequest=(HttpServletRequest)请求;
List uploadedFiles=new ArrayList();
试一试{
//此处不包括文件大小设置
DiskFileItemFactory=新的DiskFileItemFactory();
setFileCleaningTracker(FileCleanerCleanup.getFileCleaningTracker(httpRequest.getSession().getServletContext());
ServletFileUpload upload=新的ServletFileUpload(工厂);
uploadedFiles=upload.parseRequest(httpRequest);

您的代码是否按预期工作?