【问题标题】:Uploading multiple files with Django使用 Django 上传多个文件
【发布时间】:2010-11-23 20:03:40
【问题描述】:

如何使用 Django 上传多个文件?

【问题讨论】:

    标签: django upload


    【解决方案1】:

    在经历了很多痛苦之后,我最终让 uploadify (http://www.uploadify.com/) 与 django 一起工作,但问题并不是真正的 django,而是让它与 Apple Mac 一起工作;该平台上的浏览器不会从 Flash 中提供 cookie;您需要手动设置它们:

    所以我将这些包含在我的渲染到响应中:

    return render_to_response('files_upload.html', {
           'session_cookie_name': settings.SESSION_COOKIE_NAME,
           'session_key': request.session.session_key
    

    并通过模板中的配置从 uploadify 中呈现它们:

    $(document).ready(function() {
        $('#fileInput').uploadify({
            'scriptData': {'{{session_cookie_name}}': '{{session_key}}'},
    

    我已经看到在视图上使用装饰器做得更好,但这是我在中间件中放置的肮脏黑客,用于在会话中间件运行以恢复会话之前将 POST 复制到 COOKIE。

    class FakeUploadCookieMiddleware(object):
       """TODO: replace the hardcoded url '/upload' with a 'reverse'."""
       def process_request(self, request):
           if request.path == '/upload/' \
               and request.POST.has_key(settings.SESSION_COOKIE_NAME):
               request.COOKIES[settings.SESSION_COOKIE_NAME] = \
                   request.POST[settings.SESSION_COOKIE_NAME]
               logging.debug('Faking the session cookie for an upload: %s', \
                   request.POST[settings.SESSION_COOKIE_NAME])
    

    【讨论】:

    • 好吧,现在这绝对应该放在uploadify主页的某个地方,挣扎了一段时间,直到放弃它并使用blogs.bigfish.tv/adam/2009/06/14/swfupload-jquery-plugin(虽然不是django,但仍然肯定cookie必须有有问题)
    • 完全按照您的要求进行操作,但仍然无法正常工作 - 仍然出现错误 403。有什么想法吗?
    【解决方案2】:

    有人已经创建了一个可以满足您的目的的多上传字段。

    http://scompt.com/archives/2007/11/03/multiple-file-uploads-in-django

    Django 非常支持构建表单和处理文件上传。我会通读这些文章以更好地了解多上传字段代码的工作原理。

    1. Django Docs - Forms
    2. Django Docs - File Uploads

    【讨论】:

    • 谢谢。这似乎有效,但我得到了一个时髦的错误。无论我上传什么,我都会得到:“没有提交文件。检查表单上的编码类型。”查看源代码,我可以看到这是一个 TypeError 正在引发。
    • 你有 enctype="multipart/form-data" 吗?
    • 这只是“多个”,因为他创建了许多 <input> 字段。在<input type="file"> 上支持HTML5 的multiple 属性会更好。
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多