Java Servlet 3.0文件上传-删除TMP文件
我正在使用Java Servlet 3.0上传文件,使用@MultipartConfig
注释并request.getParts()
获取文件。
上载文件后,将在Web应用程序工作目录(tomcat/work/Catalina/localhost/webappname
)中创建一个TMP文件。例如:
upload_7c59101b_9f97_4e3f_9fa5_e484056d26fa_00000209.tmp
该应用程序将文件复制到服务器上的另一个目录-
我正在使用该part.write()
方法执行此操作,但它也可以通过获取输入流并写入字节来工作。两种方法都可以正常工作。
上传后,我需要删除TMP文件,但是这样做很麻烦。该part.delete()
方法不执行任何操作。我还尝试使用javax.servlet.context.tempdir
并对其进行遍历以访问目录中的文件以进行删除,但是在调用delete方法时,它始终返回false。使用Files.delete(path)
from方法Files.nio
将返回一个异常,该异常声称文件正在被另一个程序使用(即锁定),因此无法删除。服务器正在运行Windows
Server 2012 R2。
有谁有其他解决方案来删除这些TMP文件?值得指出的是,我也尝试使用HttpRequestListener
过,但仍然无法删除文件。
非常感谢
回答:
您(不得!)不要直接操作文件,而应使用getInputStream()
特定的方法Part
来获取上载文件的内容。Servlet容器(在您的情况下为Tomcat)将-或至少应该-
照顾临时文件。
以上是 Java Servlet 3.0文件上传-删除TMP文件 的全部内容, 来源链接: utcz.com/qa/413315.html