После большой боли я в конечном итоге получил uploadify (http://www.uploadify.com/), работающий с django, но проблема была не в django, а в том, чтобы заставить его работать с Apple Mac; браузеры на этой платформе не обслуживают куки из Flash, вам нужно установить их вручную:
Итак, я включил их в свой рендер-ответ:
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])