0

从我的服务器日志中,当我尝试在 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_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]
...

据我所知,我已经验证了关联的 File 和 FileItem 以及 DiskFileItemFactory 直到我的 servlet 方法返回后才超出范围(有资格进行垃圾收集)。

我只是在寻找可能导致 FileUpload 过早删除这些临时文件的其他潜在情况。

附加信息:我只在特定客户端上传文件时看到此问题。发送到其他客户端上的相同 servlet 的相同文件似乎不会导致此问题。我还没有发现有问题的客户和没有问题的客户之间的区别。

4

1 回答 1

-1

文件大小可能超过 10 Kb(默认阈值)。当您使用 DiskFileItemFactory 解析请求时,您应该设置一个新的阈值,例如:

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

**factory.setSizeThreshold(102400);**

List /* FileItem */ items = upload.parseRequest(request);
于 2013-08-01T10:57:58.447 回答