在过去的几个月里,我一直在我的 PHP 应用程序中使用 Uploadify,并且我一直在试图找出一个难以捉摸的错误。当发生致命错误时,我会收到电子邮件,它们为我提供了大量详细信息。我已经收到了几十个。但是,我自己无法重现该问题。一些用户(比如我自己)没有遇到任何问题,而其他用户则可以。
在我给出问题的细节之前,这里是流程。
- 用户访问我正在使用的 CMS 中页面的编辑屏幕。
- 页面的记录 id 作为隐藏值放入表单中。
- 用户单击 Uploadify 浏览按钮并选择一个文件(仅允许选择单个文件)。
- 用户单击我的表单的提交按钮。
- jQuery拦截表单提交动作,触发Uploadify开始上传,提交动作返回false(手动取消表单提交事件,让Uploadify接管)。
- Uploadify 上传到自定义流程脚本。
- Uploadify 完成上传并触发 Javascript 完成回调。
- Javascript 回调调用 $('#myForm').submit() 来提交表单。
现在这就是应该发生的事情。我收到了关于上传冻结为 100% 的报告以及其他显示“I/O 错误”的报告。
发生的事情是,表单正在使用完成回调提交,但表单中存在的一些帖子参数根本不在帖子数据中。页面的 id,我之前说过作为隐藏字段添加到表单中,在发布数据 ($_POST) 中根本不存在——在 $_POST 数组中没有“id”项。奇怪的是,发布数据确实包含某些字段的值。例如,我有一个名为“name”的文本类型输入,它用于记录名称,它确实显示在发布数据中。
这是我收集的内容:
- 这已经发生在 Mac OSX 10.5 和 10.6、Windows XP 和 Windows 7 上。如果有帮助,我可以发布准确的用户代理字符串。
- 用户必须使用 Flash 10.0.12 或更高版本。我们已经做到了,因此如果表单具有 < 10.0.12,则表单将恢复为使用普通的“文件”字段。
有没有人有任何想法,这可能是什么原因?