Загрузка файла Jquery, вызывающая обработчик загрузки при загрузке - PullRequest
0 голосов
/ 30 октября 2018

Я использую jQuery File Upload (https://github.com/blueimp/jQuery-File-Upload). Я использую Terascript для моего обработчика загрузки на стороне сервера, и, похоже, он работает нормально.

Но, к сожалению, jQuery File Upload, похоже, хочет вызвать обработчик загрузки при загрузке, прежде чем вы сообщите ему, какие файлы вы хотите загрузить, и инициировали загрузку вручную. Обработчик выгрузки создает случайное имя, но, конечно, с ним не связано ни одного файла.

http://dev.over60travel.com/sandbox/jquery-file-uploads/index.html

После этого все, кажется, работает нормально. Но почему это вызывает загрузку при загрузке?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

В пятницу вечером меня осенило, что это интерфейс управления файлами (а не загрузки). При загрузке вы запрашиваете список существующих файлов, и именно этот процесс стал причиной моей проблемы. Извините за медлительность. ;)

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

Я раскомментировал код и изменил свой обработчик загрузки, чтобы, если аргумент файла не был отправлен, он возвращал JSON в формате, указанном в документации. Awesome!

0 голосов
/ 02 ноября 2018

Спасибо Себастьяну Тшану, автору jQuery-File-Upload, за ответ на этот вопрос.

При загрузке приложение действительно вызывает модуль загрузки. Я до сих пор не совсем уверен, почему, но способ остановить это - закомментировать следующие строки из main.js.

        // Load existing files:
//    $('#fileupload').addClass('fileupload-processing');
//    $.ajax({
        // Uncomment the following to send cross-domain cookies:
        //xhrFields: {withCredentials: true},
//        url: $('#fileupload').fileupload('option', 'url'),
//        dataType: 'json',
//        context: $('#fileupload')[0]
//    }).always(function () {
//        $(this).removeClass('fileupload-processing');
//    }).done(function (result) {
//        $(this).fileupload('option', 'done')
//            .call(this, $.Event('done'), {result: result});
//    });
...