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