如何使用Django上传多个文件?
答案 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非常支持构建表单和处理文件上传。我会阅读这些文章,以便更好地了解多上传字段代码的工作原理。