使用Django上传多个文件

时间:2009-08-28 18:37:11

标签: django upload

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

2 个答案:

答案 0 :(得分:11)

经过很多痛苦之后,我最终得到了与django一起工作的uploadify(http://www.uploadify.com/),但问题不是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])

答案 1 :(得分:2)

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

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

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

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