Ошибка загрузки IO (django-filebrowser) - PullRequest
1 голос
/ 27 мая 2011

Я получаю 'IO ERROR' при попытке загрузить файл, используя django-filebrowser (который использует uploadify).

Я должен уточнить, что единственный случай, когда это не работает, - это использование Firefox.4 на OSX.IE8 на окнах работает.

Кроме того, он работает и с Firefox при использовании локального сервера разработки.

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

Вот что я вижу из wireshark:

POST /djadmin/filebrowser/check_file/ HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: xxx
Content-Length: 57
Cookie: csrftoken=xxx sessionid=xxx
Authorization: Basic xxx
Pragma: no-cache
Cache-Control: no-cache

UPBWID=fd.png&folder=%2Fdjadmin%2Ffilebrowser%2Fupload%2FHTTP/1.1 200 OK
Date: Thu, 26 May 2011 20:08:30 GMT
Server: Apache/2.2.9
Vary: Accept-Language,Cookie
Content-Language: el
Content-Length: 2
Connection: close
Content-Type: text/html; charset=utf-8

{}

Насколько я знаю, возвращаемое значение {} в порядке.

Это единственный вывод, который я получаюот apache: xxx - пользователь [26 / May / 2011: 20: 08: 30 +0000] "POST / djadmin / filebrowser / check_file / HTTP / 1.1" 200 2 "xxx / djadmin / filebrowser / upload /" "Mozilla / 5.0(Macintosh; Intel Mac OS X 10.6; rv: 2.0.1) Gecko / 20100101 Firefox / 4.0.1 "

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

Я не под управлением mod_securityЯ запускаю django, используя mod_wsgi (и без проблем загружаю файлы по старинке).

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 27 мая 2011

Возможно, у вас возникла проблема, когда вы не публикуете токен csrf, необходимый для методов публикации.Вы можете использовать декоратор @csrf_exempt или добавить данные для загрузки.добавьте {% csrf_token%} к вашей форме и сериализуйте форму в настройке postData.Для третьей версии я использую что-то вроде этого:

(function ($) {
    $.fn.serializeJSON = function () {
        var json = {};
        jQuery.map($(this).serializeArray(), function (n, i) {
            json[n['name']] = n['value'];
        });
        return json;
    };
})(jQuery);


$('#id_filefield').uploadify({
    'swf'  : '{{ STATIC_URL }}js/libs/uploadify/uploadify.swf',
    'uploader'    : '{% url 'upload_form' %}',
    'cancelImage' : '{{ STATIC_URL }}js/libs/uploadify/uploadify-cancel.png',
    'checkExisting' : false,
    'auto'      : true,
    'postData': $('#file_upload_form').serializeJSON(),
    'multi': true,
    'uploaderType': 'flash',
    'requeueErrors': false,
    'fileObjName': 'filefield',
    'fileSizeLimit': 1024000,
    'onSelect': function() { $('#id_filefield').uploadifySettings('postData',   $('#file_upload_form').serializeJSON()); },
    'onQueueComplete': function() { ajaxdialog.dialog('close'); },
  });

очевидно, вы не хотите просто вырезать и вставить это, но это должно дать вам представление о том, о чем я говорю.

...