2009-08-28 4 views

ответ

2

Кто-то уже создал поле для нескольких загрузок, которое может служить вашим целям.

http://scompt.com/archives/2007/11/03/multiple-file-uploads-in-django

Django имеет большую поддержку для построения форм и работу с загрузкой файлов. Я прочитал бы эти статьи, чтобы лучше понять, как работает код многопользовательского поля.

  1. Django Docs - Forms
  2. Django Docs - File Uploads
+0

Спасибо. Кажется, это работает, но я получаю фанки-ошибку. Независимо от того, что я загружаю, я получаю: «Файл не был отправлен. Проверьте тип кодировки в форме». Посмотрев на источник, я вижу, что это TypeError. – 2009-08-28 20:55:55

+3

У вас есть enctype = "multipart/form-data"? – zalew

+1

Это только «несколько» в том смысле, что он создает много полей «». Было бы лучше поддерживать атрибут 'multiple' HTML5 в' '. –

11

После много боли я в конце концов получил Uploadify (http://www.uploadify.com/) работает с Джанго, но проблема была в самом деле не Джанго, но заставить его работать с Apple, Мака ; браузеры на этой платформе не обслуживают файлы cookie из Flash; вам необходимо установить их вручную:

Так я включил их в мой рендер-к-réponse:

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]) 
+0

ну, теперь это определенно должно быть помещено где-то на странице загрузки, на какое-то время борется, до тех пор, пока он его не выпустил и использовал http://blogs.bigfish.tv/adam/2009/06/14/swfupload-jquery-plugin/(не с django, хотя, но все же, определенно, файлы cookie, должно быть, были проблемой) –

+1

Сделал именно то, что у вас здесь, и он все еще не работает - по-прежнему ошибка 403. Любые идеи? – miki725

Смежные вопросы