Java apache文件上载,tmp文件被提前删除
在我的服务器日志中,当我尝试调用FileItem上的getInputStream时:Java apache文件上载,tmp文件被提前删除,java,apache,servlets,file-upload,Java,Apache,Servlets,File Upload,在我的服务器日志中,当我尝试调用FileItem上的getInputStream时: 6/22/12 14:31:14 ERROR c.s.u.WizardUploadReceiver:225 | Jumploader: Problem uploading zip13afcchr.psd - Failed to handle post properly java.io.FileNotFoundException: uploadtemp\upload__3e026c78_1381
6/22/12 14:31:14 ERROR c.s.u.WizardUploadReceiver:225 | Jumploader: Problem uploading zip13afcchr.psd - Failed to handle post properly
java.io.FileNotFoundException: uploadtemp\upload__3e026c78_13815404c62__7ff2_00000141.tmp (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method) ~[na:1.6.0_23]
at java.io.FileInputStream.<init>(FileInputStream.java:106) ~[na:1.6.0_23]
at org.apache.commons.fileupload.disk.DiskFileItem.getInputStream(DiskFileItem.java:236) ~[commons-fileupload-1.2.2.jar:1.2.2]
...
据我所知,我已经验证了关联的文件和FileItem以及DiskFileItemFactory在servlet方法返回之前没有超出垃圾收集的范围
我只是在寻找可能导致FileUpload过早删除这些临时文件的其他潜在情况
附加信息:我只在特定客户上传文件时看到这个问题。发送到其他客户机上相同servlet的相同文件似乎不会导致此问题。我还没有发现有问题的客户和没有问题的客户之间的区别 文件大小可能超过10 Kb的默认阈值。使用DiskFileItemFactory分析请求时,应设置一个新阈值,如下所示:
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
**factory.setSizeThreshold(102400);**
List /* FileItem */ items = upload.parseRequest(request);
您的根目录中有uploadtemp目录吗?请注意,您有两个错误。上载时出现问题。。。然后是FileNotFoundException.ilya-是的,在应用程序根目录下的子目录中,Jim Garrison-您误读了日志消息。我正在记录一条自定义消息以及相关的异常堆栈跟踪。您可能需要阅读日志框架。您是否使用Jumploader上载文件?不,根本不是