我遇到了一个非常奇怪的问题。我在用着 commons-fileupload (1.2.1) 在我的 web 应用程序中处理文件上传(托管在 tomcat 7.0.23 中,并且 distributable 标志已设置)。一旦我得到一个 DiskFileItem 来自我的实例 DiskFileItemFactory (不 FileCleaningTracker),我用它的 write 方法来存储文件(在同一目录中 DiskFileItemFactory 配置为在文件流入时需要将文件写入磁盘的情况下使用)。问题是这个新文件(由我显式创建和命名)在请求处理完成后被删除。正如您可以想象的那样,当我需要再次访问该文件时,这是有问题的。

看起来可能相关的花絮:

  • 有问题的目录不是 servlet 上下文中的默认临时目录,也不是 Tomcat 目录下的目录。
  • 在备用代码路径中,我立即复制该文件(而不是在不同的请求中),并且 副本不会被删除。
  • 即使我 chmod a-w 请求完成之前的文件,当请求完成时它仍然会被删除。

谢谢你的帮助。

有帮助吗?

解决方案

罪魁祸首呢?一只流浪者 finalize 9年前的方法进行“清理”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top