java.io.FileNotFoundException在提交多部分post请求时发生

java.io.FileNotFoundException在提交多部分post请求时发生,java,forms,filenotfoundexception,confluence,Java,Forms,Filenotfoundexception,Confluence,我正在提交一个包含“文件”类型输入的多部分表单。 我正在使用此输入上载图像。表单提交给servlet,servlet随后将上传的文件信息传递给节点应用程序(使用API调用),节点应用程序存储文件 我的问题是,这不适用于我试图上传的大多数文件。在某些情况下,它确实有效,但我在这些文件中找不到任何独特之处 我得到的错误是: [INFO] [talledLocalContainer] caused by: java.io.FileNotFoundException: < absolute-pat

我正在提交一个包含“文件”类型输入的多部分表单。 我正在使用此输入上载图像。表单提交给servlet,servlet随后将上传的文件信息传递给节点应用程序(使用API调用),节点应用程序存储文件

我的问题是,这不适用于我试图上传的大多数文件。在某些情况下,它确实有效,但我在这些文件中找不到任何独特之处

我得到的错误是:

[INFO] [talledLocalContainer] caused by: java.io.FileNotFoundException: < absolute-path-to-temp-dir>\temp\upload_1940e046_658b_40ae_9d6d_4a1ecac4e58d_00000083.tmp (The system cannot find the file specified)
当试图提交带有文件的表单时,我遇到了上述错误。在尝试调试代码时,我注意到在任何时间点目标目录中都没有具有给定名称的文件

我做错了什么

下面是堆栈跟踪-

[INFO] [talledLocalContainer] com.atlassian.confluence.web.filter.validateparam.RequestParamValidationFilter_already_filtered: true
[INFO] [talledLocalContainer] atlassian.core.seraph.original.url: /500page.jsp
[INFO] [talledLocalContainer] com.atlassian.confluence.security.websudo.MessagesDecoratorFilter__already_filtered__: true
[INFO] [talledLocalContainer] com.atlassian.labs.botkiller.BotKillerFilter: true
[INFO] [talledLocalContainer] com.atlassian.gzipfilter.GzipFilter_already_filtered: true
[INFO] [talledLocalContainer] Confluence-Request-Time: 1439296917003
[INFO] [talledLocalContainer] loginfilter.already.filtered: true
[INFO] [talledLocalContainer] javax.servlet.error.request_uri: /confluence/plugins/servlet/wspoints/badge/edit
[INFO] [talledLocalContainer] com.atlassian.core.filters.HeaderSanitisingFilter_already_filtered: true
[INFO] [talledLocalContainer] com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter: true
[INFO] [talledLocalContainer] com.atlassian.confluence.web.ConfluenceJohnsonFilter_already_filtered: true
[INFO] [talledLocalContainer] javax.servlet.error.exception: java.io.FileNotFoundException: C:\Users\User\IdeaProjects\points-system\target\container\tomcat6x\cargo-confluence-home\temp\upload_1940e046_658b_40ae_9d6d_4a1ecac4e58d_00000139.tmp (The system cannot find the file specified)
[INFO] [talledLocalContainer] os_securityfilter_already_filtered: true
[INFO] [talledLocalContainer] com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter: true
[INFO] [talledLocalContainer] --------------------------
[INFO] [talledLocalContainer] Parameters
[INFO] [talledLocalContainer] --------------------------
[INFO] [talledLocalContainer] caused by: java.io.FileNotFoundException: C:\Users\User\IdeaProjects\points-system\target\container\tomcat6x\cargo-confluence-home\temp\upload_1940e046_658b_40ae_9d6d_4a1ecac4e58d_00000139.tmp (The system cannot find the file specified)
[INFO] [talledLocalContainer] at java.io.FileInputStream.open0(Native Method)
[INFO] [talledLocalContainer]

问题可能在于您尝试上载的文件的大小

DiskFileItem dfi = (DiskFileItem) payload.get("file");
这意味着它将只能获取保存在磁盘上的文件(我相信只有10kb以上),因此您的问题可能是大小太小

试着改变

DiskFileItem dfi = (DiskFileItem) payload.get("file");


这将从磁盘和内存中获取文件数据,应该可以解决您的问题。

提供完整的堆栈跟踪。完成了,这有帮助吗?遗憾的是没有-但这实际上不是堆栈跟踪,只是一个合流日志。A表示代码中发生异常的位置。
DiskFileItem dfi = (DiskFileItem) payload.get("file");
FileItem dfi = (FileItem) payload.get("file");
builder.addBinaryBody("icon", dfi.getStoreLocation(), ContentType.create(dfi.getContentType()), dfi.getName());
builder.addBinaryBody("icon", dfi.get(), ContentType.create(dfi.getContentType()), dfi.getName());