【发布时间】:2010-11-23 20:03:40
【问题描述】:
如何使用 Django 上传多个文件?
【问题讨论】:
如何使用 Django 上传多个文件?
【问题讨论】:
在经历了很多痛苦之后,我最终让 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])
【讨论】:
有人已经创建了一个可以满足您的目的的多上传字段。
http://scompt.com/archives/2007/11/03/multiple-file-uploads-in-django
Django 非常支持构建表单和处理文件上传。我会通读这些文章以更好地了解多上传字段代码的工作原理。
【讨论】:
<input> 字段。在<input type="file"> 上支持HTML5 的multiple 属性会更好。