Загрузка нескольких файлов с 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 имеет отличную поддержку для создания форм и работы с загрузкой файлов. Я бы прочитал эти статьи, чтобы лучше понять, как работает код поля мультизагрузки.

  1. Django Docs - Формы
  2. Django Docs - Загрузка файлов
Другие вопросы по тегам