php - 为什么在使用 Uploadify 时一些 POST 数据会丢失?

标签 php flash upload uploadify

在过去的几个月里,我一直在我的 PHP 应用程序中使用 Uploadify,并且我一直在尝试追踪一个难以捉摸的错误。当发生 fatal error 时,我会收到电子邮件,它们会为我提供大量详细信息。我已经收到了几十个。但是,我自己无法重现该问题。有些用户(比如我自己)没有遇到任何问题,而其他用户则遇到了。

在我给出问题的细节之前,这里是流程。

  • 用户访问我正在使用的 CMS 中页面的编辑屏幕。
  • 页面的记录 ID 作为隐藏值放入表单中。
  • 用户点击 Uploadify 浏览按钮并选择一个文件(只允许选择单个文件)。
  • 用户点击我的表单的“提交”按钮。
  • jQuery拦截表单提交 Action ,触发Uploadify开始上传,提交 Action 返回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,表单将恢复使用普通的"file"字段。

有没有人知道这可能是什么原因?

最佳答案

IOError: Client read error (Timeout?)

尽管我的服务器端是 python/django,但我经常遇到同样的错误。我认为这是客户端超时,但现在回顾一下日志,当我在身份验证例程中更改某些内容时,这种停止似乎是巧合。服务器是否可能正在接收文件但随后拒绝将其写入存储?

此外,您知道有几个 Flash 客户端不发送 cookie 吗?您必须通过将 session key 注入(inject) uploadify 的“scriptData”变量来解决这个问题。

x--------------------------------

编辑。这段 python/django 代码从 uploadify 提交自身的例程开始:

# Adobe Flash doesn't always send the cookies, esp. from Apple Mac's.
# So we've told flash to send the session keys via POST. So recreate the
# session now. Also facilitates testing via curl.
cookie_name = settings.SESSION_COOKIE_NAME
if request.member.is_anonymous() and request.POST.has_key(cookie_name):

        # Convert posted session keys into a session and fetch session
        request.COOKIES[cookie_name] = request.POST[cookie_name]
        SessionMiddleware().process_request(request)

# boot anyone who is still anonymous
if request.member.is_anonymous():
    response['message'] = "Your session is invalid. Please login."
    return HttpResponse(simplejson.dumps(response), mimetype='application/json')

关于php - 为什么在使用 Uploadify 时一些 POST 数据会丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671400/

相关文章:

php - 缓存 AJAX 请求

php - 使用 __get() (魔术)模拟只读属性和延迟加载

android - 将 Flash 动画集成到 Android 游戏中

javascript - JavaScript 能否捕获由页面对象触发的 404 错误?

java - 如何监控文件上传进度?

php - 数据库 SQL 按列字段中的值排序

php - 使用 PDO ODBC SQL Server 连接时定义编码?

Linux Kiosk 软件?

c# - 如何从一个FTP下载文件然后上传文件到不同的FTP?

php - 上传图像并在服务器 WORDPRESS 中检索