0

我遇到了一个我自己和在公司工作了 7 年以上的高级开发人员都无法解决的问题,所以我希望你们能提供帮助。PHP 在提交表单后报告 $_POST 为空。尽管我们的大多数用户都使用带有 IE8 的 Windows XP,但值得注意的是,这种操作系统/浏览器组合是唯一遇到问题的组合。此外,我们每天有 125-150 次上传(主要使用 IE8),每周只有 3-5 个用户遇到问题。与我交谈的一位用户过去在同一台计算机上成功上传了多个文档而没有问题,但上周无法上传文档。

是否有其他人遇到过来自 IE8 的表单提交不包含 POST 数据的问题?

我们公司在 jQuery UI 对话框中加载了一个上传表单,用于上传多个文件,带有一个基本的进度表和一个取消按钮。代码很长并且分散在几个文件中,这就是为什么我现在选择不复制/粘贴它的原因,但我会尽力简要说明。

<div id="dialog_div">
<div id="form_container">
    <form>
    </form>
</div>
<div id="progress_div">
</div>
</div>

该表单有五个文件输入和一个提交按钮,该按钮最初是禁用的,只有在选择了一个或多个文件时才启用。进度 div 被隐藏并显示表单,然后在提交时,表单被隐藏并显示进度 div。使用 setTimeout(),进度 div 每两秒刷新一次,以显示上传百分比以及取消按钮。我们正在使用 PHP 的会话上传进度来跟踪上传并检查它是否没有超过最大大小。如果它确实超过了最大大小,XHR 将在客户端中止。单击取消按钮运行相同的 JS 函数,该函数用于中止上传太大的文件。单击取消按钮时,接收表单的 PHP 脚本永远不会执行,因此我们的错误日志中不会显示任何内容。

令人困惑的部分是接收表单的 PHP 脚本在我们的日志中生成一个错误,该错误相当于“未收到表单”,因为 $_POST 是空的。用户遇到问题的文件不会太大,我们的工作人员能够使用相同的文件并通过相同的界面为他们上传。单击取消按钮时,脚本永远不会执行,因此我们认为上传中止不是问题。

来自社区的想法?

4

1 回答 1

2

我们突然遇到了类似的问题,文件上传失败率约为 3%。与其他人没有问题,只需选择客户。

该问题可追溯到不良的互联网连接和客户端超时。因此,我们所做的就是用自定义的 plupload(http://www.plupload.com/) 实现替换所有内容。这样,文件在客户端被分成小块,然后在服务器上上传和重新组合。这为我们解决了问题,可能值得一试。

于 2013-01-22T19:15:51.140 回答