我遇到了一个非常奇怪的问题。我使用commons-fileupload
(1.2.1)来处理我的网络应用程序中的文件上传(托管在tomcat 7.0.23中,并且设置了distributable
标志)。一旦我从DiskFileItemFactory
(没有FileCleaningTracker
)获得DiskFileItem
实例,我就使用它的write
方法来存储文件(在DiskFileItemFactory
配置为使用的同一目录中,以防它需要在流式传输时将文件写入磁盘)。问题是,这个新文件(由我明确创建并命名)在请求完成处理后被删除。正如你所能想象的,当我需要再次访问该文件时,这是有问题的。
看似相关的小消息:
- 有问题的目录不是servlet上下文中的默认临时目录,也不在Tomcat目录下
- 在另一个代码路径中,我立即复制该文件(而不是在其他请求中),并且该副本不会被删除
- 即使我在请求完成之前
chmod a-w
文件,当请求完成时,它仍然会被删除
谢谢你的帮助。
罪魁祸首是谁?9年多前的一种零散的finalize
方法正在进行"清理"。