Загрузка нескольких файлов с Django
Как загрузить несколько файлов с Django?
2 ответа
После большой боли я в конечном итоге заставил 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])
Кто-то уже создал поле мультизагрузки, которое может служить вашим целям.
http://scompt.com/archives/2007/11/03/multiple-file-uploads-in-django
Django имеет отличную поддержку для создания форм и работы с загрузкой файлов. Я бы прочитал эти статьи, чтобы лучше понять, как работает код поля мультизагрузки.