2013-03-20 4 views
9

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

Линия var upa = $('.uploader').plupload('getUploader'); это дает ошибку Uncaught TypeError: Объект [объект Object] не имеет метод '' plupload

var maxfiles=2; 
    $('.uploader').each(function(){ 
     var $uploader = $(this); 
     $uploader.pluploadQueue($.extend({ 
      runtimes: 'html5,flash,html4', 
      url : '../admin/extras/upload.php', 
      max_file_size : '2mb', 
      chunk_size : '2mb', 
      unique_names : true,     
      filters : [ 
       {title : "Image files", extensions : "jpg"} 
      ], 
      resize : {width : 800, height : 600, quality : 90}, 
      flash_swf_url : 'js/mylibs/forms/uploader/plupload.flash.swf', 
      init : { 
       FilesAdded: function(up, files) { 
        plupload.each(files, function(file) { 
         if (up.files.length > maxfiles) { 
          up.removeFile(file); 
         } 
         var upa = $('.uploader').plupload('getUploader'); 
         var i = 0; 
         while (i<=upa.files.length) { 
          ultimo = upa.files.length; 
          if (ultimo > 1) { 
           if (i > 0) { 
            ultimo2 = ultimo - 1; 
            ii = i-1; 
            if (ultimo2 != ii) { 
             if (up.files[ultimo - 1].name == upa.files[i-1].name) { 
              up.removeFile(file); 
             } 
            } 
           } 
          } 
          i++; 
         } 
        }); 
        if (up.files.length >= maxfiles) { 
         $('#uploader_browse').hide("slow"); 
        } 
       }, 
       FilesRemoved: function(up, files) { 
        if (up.files.length < maxfiles) { 
         $('#uploader_browse').fadeIn("slow"); 
        } 
       } 
      } 
     })); 
     $uploader.find('.plupload_button').addClass('button grey btn'); 
     $uploader.find('.plupload_add').addClass('icon-plus'); 
     $uploader.find('.plupload_start').addClass('icon-ok'); 
    }); 

генерируется ошибка, когда я загрузить изображения. Я не знаю, чего мне не хватает, но любая помощь в этом очень ценится.

ответ

15

То, что вы хотите достичь в блоке while (i<=upa.files.length) {, не ясен для меня. Похоже, на вашей странице несколько пользователей, но я не могу понять эту идею.

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

FilesAdded: function(up, files) { 
        var maxfiles = 2; 
        if(up.files.length > maxfiles) 
        { 
         up.splice(maxfiles); 
         alert('no more than '+maxfiles + ' file(s)'); 
        } 
        if (up.files.length === maxfiles) { 
         $('#uploader_browse').hide("slow"); // provided there is only one #uploader_browse on page 
        } 
       }, 

Надеется, что это поможет

+0

Я PHP парень не парень JavaScript Я только начал работать с JS и JQuery. Я получил код на своих форумах. Это редактирование отлично поработало для вашего ввода. –

7

Хорошего ответа JBL. Я немного изменил ваше решение, чтобы сделать его более общим, и чтобы кнопка «Добавить файлы» снова появилась, когда это необходимо.

uploader.bind('FilesAdded', function(up, files) { 
    if (up.files.length >= up.settings.max_files) { 
    up.splice(up.settings.max_files); 
    $(up.settings.browse_button).hide(); 
    } 
}); 

uploader.bind('FilesRemoved', function(up, files) { 
    if (up.files.length < up.settings.max_files) { 
    $(up.settings.browse_button).show(); 
    } 
}); 

max_files является частью pluploadQueue настройки

$("#uploadBox").pluploadQueue({ 
    ... 
    max_files: 2, 
    ... 
}); 
+0

'up.settings.browse_button' содержит идентификатор кнопки обзора. Я должен был добавить id-селектор, чтобы он работал. Итак, используйте '$ ('#' + up.settings.browse_button) .hide();' – anfuerer

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