Опция автозапуска plupload 1.4.3.2

Я использую 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();;

person Gluip    schedule 03.06.2011    source источник
comment
Мне удалось заставить его работать, добавив вызов функции up.start с таймаутом из метода FilesAdded, например: setTimeout (function () {up.start ();}, 1000);   -  person Gluip    schedule 03.06.2011


Ответы (3)


В вашем событии FilesAdded измените uploader.start (); для setTimeout ('uploader.start ()', 100);

person Ben Hood    schedule 28.06.2011
comment
Спасибо, была такая же проблема, и это помогло. Я получал сообщение об ошибке q is undefined. - person VinnyD; 24.02.2012
comment
Я не понимаю, почему у него так много голосов, использование setTimeout для устранения проблемы с последовательностью выполнения - плохая новость. - person Robin van Baalen; 18.02.2013

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

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

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

person Stefan Ladwig    schedule 15.01.2012

Точно! Просто заказываю команду в таком порядке:

uploader.init();
uploader.bind('FilesAdded', function(up, files) {
    ...
    uploader.start();
});
person mihkelo    schedule 07.03.2012
comment
Пожалуйста, предоставьте более подробный контекст для вашего ответа; 'именно то, что? Кроме того, это предложение неясно; Просто заказываю команду по этому заказу. - person Nathaniel Ford; 29.10.2012