2013-10-07 2 views
2

지금 내가 plupload의 JS에서 이런 일이 : plupload 큐에 남아있는 파일의 수를 가져

$("#uploader").pluploadQueue({ 
    // General settings 
    runtimes: 'html5,silverlight,flash', 
    url: baseurl + 'admin/pages_images/uploadtoserver/' + pageID, 
    browse_button : 'uploadFiles', 
    max_file_size: '300mb', 
    chunk_size: '1mb', 
    unique_names: true, 

    // Resize images on clientside if we can 
    // resize: {width: 320, height: 240, quality: 100}, 

    // Specify what files to browse for 
    filters: [ 
     {title: "Image files", extensions: "jpg,gif,png"}, 
     {title: "Zip files", extensions: "zip"} 
    ], 

    // Flash/Silverlight paths 
    flash_swf_url: baseurl + 'assets/js/plupload/plupload.flash.swf', 
    silverlight_xap_url: baseurl + 'assets/js/plupload/plupload.silverlight.xap', 

    // PreInit events, bound before any internal events 
    preinit: { 
     Init: function(up, info) { 
      log('[Init]', 'Info:', info, 'Features:', up.features); 
     }, 

     UploadFile: function(up, file) { 
      log('[UploadFile]', file); 

      // You can override settings before the file is uploaded 
      // up.settings.url = 'upload.php?id=' + file.id; 
      // up.settings.multipart_params = {param1: 'value1', param2: 'value2'}; 
     } 
    }, 

    // Post init events, bound after the internal events 
    init: { 
     Refresh: function(up) { 
      // Called when upload shim is moved 
      log('[Refresh]'); 
     }, 

     StateChanged: function(up) { 
      // Called when the state of the queue is changed 
      log('[StateChanged]', up.state == plupload.STARTED ? "STARTED": "STOPPED"); 
     }, 

     QueueChanged: function(up) { 
      // Called when the files in queue are changed by adding/removing files 
      log('[QueueChanged]'); 

     }, 

     UploadProgress: function(up, file) { 
      // Called while a file is being uploaded 
      log('[UploadProgress]', 'File:', file, "Total:", up.total); 
     }, 

     FilesAdded: function(up, files) { 
      // Callced when files are added to queue 
      log('[FilesAdded]'); 

      plupload.each(files, function(file) { 
       log(' File:', file); 
      }); 
     }, 

     FilesRemoved: function(up, files) { 
      // Called when files where removed from queue 
      log('[FilesRemoved]'); 

      plupload.each(files, function(file) { 
       log(' File:', file); 
      }); 
     }, 

     FileUploaded: function(up, file, info) { 
      // Called when a file has finished uploading 
      log('[FileUploaded] File:', file, "Info:", info); 

      var myuploader = $("#uploader").pluploadQueue(); 

      myuploader.bind('QueueChanged', function(up, files){ 
       remaining_files = myuploader.files.length; 
       alert('All Files uploaded!'); 
      }); 

      $.ajax({ 
       type : "POST", 
       url : baseurl + 'admin/pages/reload/' + pageID, 
       success: function(data){ 
        if(data) { 
         alert('File uploaded!'); 
        } else { 
         alert('ajax error'); 
        } 
       } 
      }); 

     }, 

     ChunkUploaded: function(up, file, info) { 
      // Called when a file chunk has finished uploading 
      log('[ChunkUploaded] File:', file, "Info:", info); 
     }, 

     Error: function(up, args) { 
      // Called when a error has occured 

      // Handle file specific error and general error 
      if (args.file) { 
       log('[error]', args, "File:", args.file); 
      } else { 
       log('[error]', args); 
      } 
     } 
    } 
}); 

$('#log').val(''); 
$('#clear').click(function(e) { 
    e.preventDefault(); 
    $("#uploader").pluploadQueue().splice(); 
}); 

그러나 물론, 그것이 작동하지 않습니다

. 남아있는 파일을 줄이는 방법을 모르기 때문에, 또는 처음에 queu에있는 모든 파일의 수를 얻는 방법을 정확하게 알지 못하기 때문에, -1과 -1을 초기 값으로 할 수 있습니다. 그렇게하는 방법?

답변

0

당신이 그것을 위해 이벤트를 바인딩하고 카운터를 만들 필요가

전체 대답은 당신이 할 수있는 UI.Plupload를 사용 here

var files_remaining = 0; 
    $("#uploader").pluploadQueue({ 
    // General settings 
    runtimes: 'html5,silverlight,flash', 
    url: baseurl + 'admin/pages_images/uploadtoserver/' + pageID, 
    browse_button : 'uploadFiles', 
    max_file_size: '300mb', 
    chunk_size: '1mb', 
    unique_names: true, 

    // Resize images on clientside if we can 
    // resize: {width: 320, height: 240, quality: 100}, 

    // Specify what files to browse for 
    filters: [ 
     {title: "Image files", extensions: "jpg,gif,png"}, 
     {title: "Zip files", extensions: "zip"} 
    ], 

    // Flash/Silverlight paths 
    flash_swf_url: baseurl + 'assets/js/plupload/plupload.flash.swf', 
    silverlight_xap_url: baseurl + 'assets/js/plupload/plupload.silverlight.xap', 

    // PreInit events, bound before any internal events 
    preinit: { 
     Init: function(up, info) { 
      log('[Init]', 'Info:', info, 'Features:', up.features); 
     }, 

     UploadFile: function(up, file) { 
      log('[UploadFile]', file); 

      // You can override settings before the file is uploaded 
      // up.settings.url = 'upload.php?id=' + file.id; 
      // up.settings.multipart_params = {param1: 'value1', param2: 'value2'}; 
     } 
    }, 

    // Post init events, bound after the internal events 
    init: { 
     Refresh: function(up) { 
      // Called when upload shim is moved 
      log('[Refresh]'); 
     }, 

     StateChanged: function(up) { 
      // Called when the state of the queue is changed 
      log('[StateChanged]', up.state == plupload.STARTED ? "STARTED": "STOPPED"); 
     }, 

     QueueChanged: function(up) { 
      // Called when the files in queue are changed by adding/removing files 
      log('[QueueChanged]'); 

     }, 

     UploadProgress: function(up, file) { 
      // Called while a file is being uploaded 
      log('[UploadProgress]', 'File:', file, "Total:", up.total); 
     }, 

     FilesAdded: function(up, files) { 
      // Callced when files are added to queue 
      log('[FilesAdded]'); 

      plupload.each(files, function(file) { 
       log(' File:', file); 
      }); 
     }, 

     FilesRemoved: function(up, files) { 
      // Called when files where removed from queue 
      log('[FilesRemoved]'); 

      plupload.each(files, function(file) { 
       log(' File:', file); 
      }); 
     }, 

     FileUploaded: function(up, file, info) { 
      // Called when a file has finished uploading 
      log('[FileUploaded] File:', file, "Info:", info); 

      var myuploader = $("#uploader").pluploadQueue(); 

      myuploader.bind('QueueChanged', function(up, files){ 
       remaining_files = myuploader.files.length; 
       alert('All Files uploaded!'); 
      }); 

      $.ajax({ 
       type : "POST", 
       url : baseurl + 'admin/pages/reload/' + pageID, 
       success: function(data){ 
        if(data) { 
         alert('File uploaded!'); 
        } else { 
         alert('ajax error'); 
        } 
       } 
      }); 

     }, 

     ChunkUploaded: function(up, file, info) { 
      // Called when a file chunk has finished uploading 
      log('[ChunkUploaded] File:', file, "Info:", info); 
     }, 

     Error: function(up, args) { 
      // Called when a error has occured 

      // Handle file specific error and general error 
      if (args.file) { 
       log('[error]', args, "File:", args.file); 
      } else { 
       log('[error]', args); 
      } 
     } 
    } 
}); 
var uploader = $("#uploader").pluploadQueue(); 

uploader.bind('QueueChanged', function(up, files) 
{ 
    files_remaining = uploader.files.length; 
}); 

uploader.bind('FileUploaded', function(up, file, res) 
{ 
    files_remaining--; 
    if (files_remaining == 0) 
    { 
     alert('Complete!'); 
    } 
}); 
+0

흠, 작동하지 않습니다. 내 코드와 결합 할 수 있을까요? – mamolvary

+0

전체 코드를 알려주시겠습니까? –

+0

나의 도움은 도움이되는 경우에 1.5.4이다. – mamolvary

0

...

$ ('#입니다 uploader '). plupload ('getUploader '). 총계 대기열

1

FileUploaded 이벤트 검사시 up.total.queued

uploader.bind('FileUploaded', function(up, file, res) 
    { 
     if (up.total.queued == 0) 
     { 
      alert('Complete!'); 
     } 
    });