当我尝试使用表单上传文档时,出现以下错误:
org.apache.commons.fileupload.FileUploadBase$IOFileUploadException:处理多部分/表单数据请求失败。/temp/upload_37a45ff5_18dcebe4760__7ff4_00000073.tmp(没有这样的文件或目录)
它在 ServletFileUpload.parseRequest(request) 上失败,但堆栈跟踪没有提供其他信息。这似乎只发生在大于 100kB 的文件中。
该目录存在并且可读可写,并且有足够的可用磁盘空间。我尝试增加 server.xml 中的最大文件大小,更新所有必要的 web.xml 文件以匹配此限制,并更新 conf 目录中的连接器 maxPostSize - 没有效果。
我正在使用 HTML 表单提交将请求从客户端发送到服务器。
仅当我在 Mac 或基于 Linux 的系统上运行 Tomcat 8 时才会发生此错误 - 如果我在 Windows 上运行它,一切都会按预期工作。我还通过运行全新安装的 Tomcat 8.5.78 进行了尝试。最后,我还尝试将 commons.fileupload 包从 1.2.1 更新到 1.5——所有这些更改对结果没有影响。
我完全迷失了,希望能得到关于我能做什么的指示,或者至少调试问题的最佳方法是什么。谢谢!
0
我设法修复了它,结果发现这是一个潜在的操作系统问题。默认情况下,Windows 有一个名为 temp 的目录,因此如果文件大于 100KB,应用程序将使用该 temp 目录来存储文件,然后将其发送到服务器。
然而,在基于 Linux 的系统上,没有 temp,只有 tmp,因此应用程序永远无法存储超过 100KB 的文件。我刚刚在计算机的根目录中创建了该临时目录,并向所有用户授予 rwx 权限,然后重新运行应用程序,一切正常