Plupload Автоматически начинать загрузку при добавлении файлов - PullRequest
18 голосов
/ 15 ноября 2011

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

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"}
      ],
    });

Ответы [ 5 ]

31 голосов
/ 17 ноября 2011

Добавление 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!
          });
        }
      }
    });
  });
14 голосов
/ 15 января 2012

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

Так твой код:

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

после вашего

uploader.init();

больше информации

12 голосов
/ 03 января 2012

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

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

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

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

/js/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js
3 голосов
/ 20 мая 2014

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

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

$("#uploader").plupload({
    .....
    autostart: true,
    .....
});
2 голосов
/ 08 июля 2015

Просто нажмите кнопку «Начать загрузку» таким образом

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

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

...