Загрузка опции автозапуска 1.4.3.2

#plupload

#загрузка

Вопрос:

Я использую plupload на сайте mvc и хотел бы загрузить один файл, как только он будет выбран. Я установил для автозапуска элемента управления загрузчиком значение true, но это не активирует загрузку. Я также пытался вызвать uploader.start(); делегат ‘filesadded’ загрузчика, но это работает только со вторым файлом, который я пытаюсь загрузить. Я использую plupload 1.4.3.2 без виджета пользовательского интерфейса. Вот мой код:

 var uploader = new plupload.Uploader({
    runtimes: 'gears,html5,flash,silverlight,browserplus',
    browse_button: 'pickfiles',    
    autostart : true,    
    max_file_size: '10mb',
    url: '/Event/Upload',
    resize: { width: 320, height: 240, quality: 90 },
    flash_swf_url: '/Scripts/pl/plupload.flash.swf',
    silverlight_xap_url: '/Scripts/pl/plupload.silverlight.xap',
    filters: [
    { title: "Image files", extensions: "jpg,gif,png" },
    { title: "Zip files", extensions: "zip" }
]
});
uploader.bind('Init', function (up, params) {
    $('#filelist')[0].innerHTML = "<div>Current runtime: "   params.runtime   "</div>";
});
uploader.bind('Error', function (up, err) {
    $('#filelist').append("<div>Error: "   err.code  
        ", Message: "   err.message  
        (err.file ? ", File: "   err.file.name : "")  
        "</div>"
    );

});
uploader.bind('FilesAdded', function (up, files) {
    for (var i in files) {
        $('#filelist')[0].innerHTML  = '<div id="'   files[i].id   '">'   files[i].name   ' ('   plupload.formatSize(files[i].size)   ') <b></b></div>';
    }
    //uploader.start();
});
$('#uploadfiles').click(function (e) {
    uploader.start();
    e.preventDefault();
});

uploader.bind('UploadProgress', function (up, file) {
    $('#'   file.id)[0].getElementsByTagName('b')[0].innerHTML = '<span>'   file.percent   "%</span>";
});

uploader.init();;
  

Комментарии:

1. Мне удалось заставить ее работать, добавив вызов функции up.start с таймаутом из метода FilesAdded, такого как: setTimeout(функция () { up.start(); }, 1000);

Ответ №1:

В вашем файле добавлено событие, измените uploader.start(); на setTimeout(‘uploader.start()’, 100);

Комментарии:

1. Спасибо, была такая же проблема, и это помогло. Я получал сообщение об ошибке «q не определен».

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

Ответ №2:

«Убедитесь, что вы привязываете ее после инициализации, поскольку она привязывает обработчики по умолчанию».

дополнительная информация

(Я знаю, что это слишком поздно, но мне все еще нравится это решение)

Ответ №3:

Точно! Просто упорядочиваем команду в этом порядке:

 uploader.init();
uploader.bind('FilesAdded', function(up, files) {
    ...
    uploader.start();
});
  

Комментарии:

1. Пожалуйста, предоставьте больше контекста вашему ответу; «именно» что? Кроме того, это предложение неясно; «Просто упорядочивание команды в этом порядке».