2013-03-20 6 views
9

나는이 코드를 제대로 작동 시키려고 노력하고 있습니다. 총 2 장의 이미지를 업로드하지 못하도록 제한하고 싶습니다.jQuery Plupload는 업로드 수를 제한합니다.

가 처리되지 않는 형식 오류의 오류주는 선 var upa = $('.uploader').plupload('getUploader'); : 개체 [개체 개체] 나 이미지를 업로드 할 때 오류가 발생되어있는 방법 '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 개의 파일로 제한해야합니다. 이

+0

설정을 선택합니다. 그들의 포럼에서 코드를 얻었습니다. 이 편집은 입력에 대한 완벽한 감사의 마음을 나타 냈습니다. –

7

좋은 답변 JBL 도움이 될 것입니다

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 
        } 
       }, 

희망. 좀 더 일반적인 방법으로 솔루션을 약간 수정하고 필요할 때 '파일 추가'버튼을 다시 표시하십시오.

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의 일부입니다 난 그냥 JS와 jQuery를 함께 작업을 시작했다 자바 스크립트 사람이 아니라 PHP는 사람입니다

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

'up.settings.browse_button'에는 찾아보기 버튼의 ID가 포함됩니다. id-selector를 추가하여 작동되게해야했습니다. 그래서'$ ('#'+ up.settings.browse_button) .hide();'를 사용하십시오. – anfuerer

관련 문제