开发者

How to call a function after all images in queue gets uploaded in swfupload

I m using this code and i want to call a function after all images in queue gets uploaded.


$(function(){
    $('#swfupload-control').swfupload({
        upload_url: "upload.php",
        file_post_name: 'uploadfile',
        file_size_limit : "20000",
        file_types : "*.jpg;*.png;*.gif",
        file_types_description : "Image files",
        file_upload_limit :500,
        flash_url : "js/swfupload/swfupload.swf",
        button_image_url : 'js/swfupload/wdp_buttons_upload_114x29.png',
        button_width : 114,
        button_height : 29,
        button_placeholder : $('#button')[0],
        debug: false
    })
        .bind('fileQueued', function(event, file){
            var listitem=''+
                'File: '+file.name+' ('+Math.round(file.size/20000)+' KB) '+
                ''+
                'Pending

'+ ' '+ ''; $('#log').append(listitem); $('li#'+file.id+' .cancel').bind('click', function(){ var swfu = $.swfupload.getInstance('#swfupload-control'); swfu.cancelUpload(file.id); $('li#'+file.id).slideUp('fast'); }); // start the upload since it's queued $(this).swfupload('startUpload'); }) .bind('fileQueueError', function(event, file, errorCode, message){ alert('Size of the file '+file.name+' is greater than limit'); }) .bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){ $('#queuestatus').text('Files Selected: '+numFilesSelected+' / Queued Files: '+numFilesQueued); }) .bind('uploadStart', function(event, file){ $('#log li#'+file.id).find('p.status').text('Uploading...'); $('#log li#'+file.id).find('span.progressvalue').text('0%'); $('#log li#'+file.id).find('span.cancel').hide(); }) .bind('uploadProgress', function(event, file, bytesLoaded){ //Show Progress var percentage=Math.round((bytesLoaded/file.size)*100); $('#log li#'+file.id).find('div.progress').css('width', percentage+'%'); $('#log li#'+file.id).find('span.progressvalue').text(percentage+'%'); }) .bind('uploadSuccess', function(event, file, serverData){ var item=$('#log li#'+file.id); item.find('div.progress').css('width', '100%'); item.find('span.progressvalue').text('100%'); var pathtofile='/'+file.name+'" target="_blank" >view »'; item.addClass('success').find('p.status').html(''); }) .bind('uploadComplete', function(event, file){ // upload has completed, try the next one in the queue 开发者_开发百科 $(this).swfupload('startUpload'); }) });


I would suggest using a plugin like uplodify

It provides a call back function after uploading one or more images. You can find the relevant examples in their documentation.


get the count of the files you upload and in the uploadComplete event handler keep track of how many times it's called and check if it equals the count.


add handler:

upload_complete_handler     : uploadComplete

and in handlers.js at the end of function add what code you like:

function uploadComplete(file) {
    try {
        /*  I want the next upload to continue automatically so I'll call startUpload here */
        if (this.getStats().files_queued === 0) {
            document.getElementById(this.customSettings.cancelButtonId).disabled = true;
        } else {    
            this.startUpload();
        }
    } catch (ex) {
        this.debug(ex);
    }

    // do what you want HERE!
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜