在过去的几个月中,我一直在PHP应用程序中使用Uploadify,并且一直在努力寻找难以捉摸的错误。发生致命错误时,我会收到电子邮件,并且它们为我提供了大量详细信息。我已经收到了很多。但是,我本人无法重现该问题。有些用户(例如我自己)没有问题,而其他用户则有问题。

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

  • 用户访问我正在使用的CMS中页面的编辑屏幕。
  • 页面的记录ID被作为隐藏值放入表单中。
  • 用户单击Uploadify浏览按钮并选择一个文件(仅允许单个文件选择)。
  • 用户单击我的表单的Submit按钮。
  • jQuery截获表单提交操作,触发Uploadify开始上载,并为提交操作返回false(手动取消表单提交事件,以便Uploadify可以接管)。
  • Uploadify上传到自定义流程脚本。
  • Uploadify完成上传并触发Javascript完成回调。
  • Javascript回调调用$('#myForm')。submit()提交表单。

  • 现在这应该发生。我已经收到有关上传卡住为100%的报告,还有其他报告显示“I/O错误”的报告。

    发生的情况是,表单正在使用完成回调进行提交,但是表单中存在的某些post参数根本不在发布数据中。页面的id(我之前说过是作为隐藏字段添加到表单中的)在发布数据($ _POST)中根本不存在-$ _POST数组中没有用于'id'的项。奇怪的是,发布数据确实包含某些字段的值。例如,我有一个文本类型的输入,称为“名称”,它是记录名称,它确实显示在发布数据中。

    这是我收集的内容:
  • 这已在Mac OSX 10.5和10.6,Windows XP和Windows 7上发生。如果有帮助,我可以发布确切的用户代理字符串。
  • 用户必须使用Flash 10.0.12或更高版本。我们做到了,如果它们的
    有人根本不知道这可能是什么原因吗?

    最佳答案

    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/

  • 10-11 03:13