我的印象是,如果使用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();
}
}
}
我将内存阈值设置为5KB并尝试上传13KB文件。我的预期结果,它将被放在/home/test/bin
目录中。但它被放置在我为成功上传而创建的上传目录路径中。
答案 0 :(得分:0)
它位于成功的上传路径上,因为您正在执行:file.write(new File(request.getServletContext().getInitParameter("UploadPath") + File.separator + name));
但是,库会自动删除临时文件...请参阅&#34;资源Clenaup&#34;在fileupload user-guide