2012-10-22 40 views
12

Tôi đang sử dụng plugin Tải lên tệp jQuery.Tải lên tệp jQuery - cách nhận dạng khi tất cả các tệp đã tải lên

Tôi muốn có thể kích hoạt sự kiện khi tất cả các tệp đã chọn tải lên xong. Cho đến nay tôi có một sự kiện để thực hiện hành động khi một tệp được chọn để tải lên và khi mỗi tệp cụ thể kết thúc tải lên - có cách nào để phát hiện rằng tất cả các tệp đã chọn đã tải lên xong chưa?

Ứng dụng thực tế là ở đây http://repinzle-demo.herokuapp.com/upload

lĩnh vực đầu vào của tôi trông như thế này:

<div id="fine-uploader-basic" class="btn btn-success" style="position: relative; overflow: hidden; direction: ltr;"> 

mã kịch bản của tôi trông như thế này:

<script> 
     $(function() { 
      $('#fileupload').fileupload({ 
       dataType: 'json', 
       add: function (e, data) { // when files are selected this lists the files to be uploaded 
        $.each(data.files, function (index, file) { 
         $('<p/>').text("Uploading ... "+file.name).appendTo("#fileList"); 
        }); 
        data.submit(); 
       }, 
       done: function (e, data) { // when a file gets uploaded this lists the name 
        $.each(data.files, function (index, file) { 
         $('<p/>').text("Upload complete ..."+file.name).appendTo("#fileList"); 
        }); 
       } 
      }); 
     }); 
    </script> 

Tôi đang xử lý yêu cầu với một Play Bộ điều khiển khung (Java) trông giống như sau:

PUBLI

c static void doUpload(File[] files) throws IOException{ 

     List<ImageToUpload> imagesdata = new ArrayList<ImageToUpload>(); 
       //ImageToUpload has information about images that are going to be uploaded, name size etc. 

     for(int i=0;i<files.length;i++){ 
      Upload upload = new Upload(files[i]); 
      upload.doit(); //uploads pictures to Amazon S3 
      Picture pic = new Picture(files[i].getName()); 
      pic.save(); // saves metadata to a MongoDB instance 
      imagesdata.add(new ImageToUpload(files[i].getName())); 
     } 

     renderJSON(imagesdata); 
    } 

Trả lời

17

Tôi nghĩ rằng bạn đang tìm kiếm sự kiện 'stop':

$('#fileupload').bind('fileuploadstop', function (e) {/* ... */}) 

như đã nói trong plugin documentation:

Callback cho những lần tải dừng lại, tương đương với sự kiện ajaxStop toàn cầu (nhưng chỉ dành cho yêu cầu tải tệp lên).

Bạn cũng có thể chỉ định các chức năng trên tạo Plugin đi qua nó như tham số

$('#fileupload').fileupload({ 
     stop: function (e) {}, // .bind('fileuploadstop', func); 
    }); 
+1

thất vọng này vẫn còn tồn tại 3 năm sau khi ban đầu được yêu cầu. Tất cả các câu trả lời tôi đã thấy không giải quyết đầy đủ vấn đề. Để gọi lại 'tải lên tệp' để chỉ kích hoạt 1 lần sau khi tất cả tải lên đã hoàn tất, bạn cần chuyển tùy chọn 'singleFileUploads: false'. Điều này sẽ gây ra 1 yêu cầu XHR được sử dụng cho tất cả các video tải lên và chỉ gọi lại để chỉ được kích hoạt một lần. Câu trả lời khác: http://stackoverflow.com/questions/19025748/finish-of-multiple-file-upload http://stackoverflow.com/questions/18636845/refreshing-the-page-after-completing- tải lên-in-jquery-đa tập tin-uplaoder – BlueWater86

+0

Lol. Tôi đã thử toàn bộ danh sách các phương pháp có thể khởi động khi tải lên không đồng bộ đã hoàn tất. Không nghĩ rằng sự kiện dừng lại sẽ là thứ để sử dụng. Cảm ơn! –

Các vấn đề liên quan