2011-11-15 2 views
17

Когда файлы добавляются, я хочу начать процесс загрузки автоматически. Я назвал функцию start в конце FilesAdded, но она не запускает загрузку.Plupload Автоматически загружать файлы при добавлении файлов

uploader.bind('FilesAdded', function(up, files) { 
     var str = ""; 
     for (var i in files) { 
     str += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>'; 
     } 
     $('#filelist').html(str); 
     up.refresh(); 
     up.start(); 
    }); 

Вот мой код создания

var uploader = new plupload.Uploader({ 
     runtimes: 'html5,flash,silverlight', 
     autostart : true, 
     url: '<%= images_path %>', 
     max_file_size: '10mb', 
     multipart: true, 
     browse_button: "pickfiles", 
     container: "the-uploader", 
     drop_element : "drop-area", 
     multipart_params: { 
     '_http_accept': 'application/javascript', 
     '<%=request_forgery_protection_token%>': '<%=form_authenticity_token%>', 
     '<%=request.session_options[:key]%>': '<%=request.session_options[:id]%>' 
     }, 
     filters: [ 
     {title: "Images", extensions: "avi,jpg,jpeg,png,zip"} 
     ], 
    }); 
+0

Можете ли вы рассказать о том, что происходит? Обновлен ли ваш HTML-дисплей? Есть ли что-либо в журналах сервера? – muffinista

ответ

28

Добавление up.start() в вашем FilesAdded затруднительное должен начать загрузку при добавлении файла. Я пошел вниз по пути вызова мой загрузчиком как так (у меня были проблемы делают это так, как вы пытаетесь назвать):

$(function() { 
    // Setup html5 version 
    $("#html5_uploader").pluploadQueue({ 
     // General settings 
     runtimes : 'html5', 
     url : 'upload.php', 
     max_file_size : '10mb', 
     chunk_size : '1mb', 
     unique_names : true, 
     dragdrop : true, 
     multiple_queues : false, 
     multi_selection : false, 
     max_file_count : 1, 

     // Specify what files to browse for 
     filters : [ 
     {title : "Text files", extensions : "txt"} 
     ], 

     init : { 
     FilesAdded: function(up, files) { 
      up.start(); 
     }, 
     UploadComplete: function(up, files) { 
      $.each(files, function(i, file) { 
      // Do stuff with the file. There will only be one file as it uploaded straight after adding! 
      }); 
     } 
     } 
    }); 
    }); 
+0

Я получил ошибку plupload.full.min.js: 14 Uncaught SYNTAX_ERR: SYNTAX_ERR: DOMException 12, используя up.start(), используя версию 2.1.9 – tyan

12

Для меня это не работали вашу версию, но сделал работу:

FilesAdded: function(up, files) { 
    setTimeout(function() { up.start(); }, 100); 
}, 

Поэтому установите таймер после 100 мс, чтобы выполнить запуск. Я использую версию JQuery щ во время тестирования и получил эту ошибку:

g("#" + l.id).position() is null 

/js/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js 
+0

Не будет ли он запускать 'start()' непрерывно? – Aistis

13

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

Так что ваш код:

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

после вашего

uploader.init(); 

more information

+2

Это решение, спасибо – NicoGranelli

+1

Odd! Интересно, почему это работает так – jontro

+1

Это должен быть принят ответ. –

3

Я также хотел то же самое для меня и нашел ниже способ сделать это.

Новый способ автоматического запуска загрузки файла после добавления файла просто нужно установить верный autostart собственности, как показано ниже

$("#uploader").plupload({ 
    ..... 
    autostart: true, 
    ..... 
}); 
2

Просто вызвать кнопку Start Загрузить на этом пути

FilesAdded: function(up, files) { 
    $('#fileupload_start').click(); 
}, 

Этот будет загружать файл, не дожидаясь 100 мс.

+0

это работает для меня, я использую версию 2.1.9 – tyan

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