【问题标题】:Code samples for Django + SWFUpload?Django + SWFUpload 的代码示例?
【发布时间】:2014-07-01 18:32:48
【问题描述】:

有人有 Django + SWFUpload 的简单代码示例吗?我让它在我的 PHP 应用程序中完美运行,但 Django 让我头疼。

【问题讨论】:

  • -1:无代码。 -1:没有错误回溯或其他消息。

标签: python django swfupload


【解决方案1】:

很遗憾,我无法为您提供任何非常详细的代码示例,但我在使用 SWFUpload + Django 方面有相当多的经验(对于我工作的照片共享网站)。无论如何,这里有一些建议,希望能帮助你追求 DjSWF 的幸福:)

  1. 您会想要使用 cookie 插件(当然,如果您正在使用某种基于会话的身份验证 [如 django.contrib.auth,并关心谁上传了什么)。

    cookie 插件将 cookie 中的数据作为 POST 发送,因此您必须找到某种方法将其返回到 request.COOKIESprocess_request 中间件,该中间件在特定 URL 上的 request.POST 中查找 settings.SESSION_COOKIE_NAME并将其转储到request.COOKIES 非常适合这个:)

  2. 另外,请记住您必须在响应正文中返回一些内容,以便 SWFUpload 将其识别为成功的上传尝试。我相信这在最新的 SWFUpload 测试版中已经发生了变化,但无论如何,建议只是在其中粘贴一些“ok”之类的东西。对于失败,请使用 HttpResponseBadRequest 之类的东西。

  3. 最后,如果您找不到它们,上传的文件位于request.FILES :)

如果您有任何我没有提到的困惑,请随时发布更详细的内容,我很乐意提供帮助。

【讨论】:

  • 这是一个非常糟糕的问题的绝佳答案。第(1)点的第二段对我特别有帮助。谢谢。
【解决方案2】:

SWFUpload 示例的 Django 版本:

http://github.com/naltimari/django-swfupload-samples/tree/master

这么久上传。好主意,但它只是有问题,尤其是在 Windows 上。

【讨论】:

    【解决方案3】:

    以下是我用于解决此问题的特定于 Django 的实现(即,我的上传在 Firefox 中因 302 重定向而失败)。

    在生成带有上传器的页面的初始视图中,我查看了 cookie 并找到了 sessionid

    ipdb> self.request.COOKIES
    {'csrftoken': '43535f552b7c94563ada784f4d469acf', 'sessionid': 'rii380947wteuevuus0i5nbvpc6qq7i1'}
    

    当我查看 SWFUploadMiddleware 中发布的内容时(使用 Firefox 时),我发现 sessionid 没有设置。

    在生成包含上传处理程序的页面的初始视图中,我将 sessionid 添加到上下文中。

    context['sessionid'] = self.request.session.session_key
    

    在我的 swfuploader 设置中,我将 sessionid 添加到 post-params 选项中,如下所示:

    post_params: {... "sessionid": "{{ sessionid }}" ...},
    

    现在,当我查看 SWFUploadMiddleware 时,我可以看到 sessionid 正在发布,如果 Firefox 则我的上传开始工作

    ipdb> request.POST 
    <QueryDict: {... u'session_id': [u'rii380947wteuevuus0i5nbvpc6qq7i1'],...}>
    

    为了完整起见,我的 SWFUploadMiddleware 看起来像这样......

    from django.conf import settings
    from django.core.urlresolvers import reverse
    
    class SWFUploadMiddleware(object):
        def process_request(self, request):
            if (request.method == 'POST') and (request.path == reverse('upload_handler')) and request.POST.has_key(settings.SESSION_COOKIE_NAME):
                request.COOKIES[settings.SESSION_COOKIE_NAME] = request.POST[settings.SESSION_COOKIE_NAME]
        # http://stackoverflow.com/questions/6634666/403-forbidden-error-on-swfupload-and-django
        # Fix for problem uploading images (403 error) in Firefox 20 and others
        if request.POST.has_key('csrftoken'):
                request.COOKIES['csrftoken'] = request.POST['csrftoken']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 2011-03-11
      相关资源
      最近更新 更多