Как вызвать функцию после загрузки всех изображений в очереди в swfupload - PullRequest
0 голосов
/ 01 июля 2011

Я использую этот код и хочу вызвать функцию после загрузки всех изображений в очереди.


$(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: <em>'+file.name+'</em> ('+Math.round(file.size/20000)+' KB) '+
                ''+
                'Pending</p>'+
                ' '+
                '</li>';
            $('#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');

        })

}); 


Ответы [ 3 ]

0 голосов
/ 01 июля 2011

получить количество загруженных файлов и в обработчике события uploadComplete отследить, сколько раз он был вызван, и проверить, равно ли оно количеству.

0 голосов
/ 01 июля 2011

добавить обработчик:

upload_complete_handler     : uploadComplete

и в конце handlers.js добавить код, который вам нравится:

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 голосов
/ 01 июля 2011

Я бы предложил использовать такой плагин, как uplodify

Предоставляет функцию обратного вызова после загрузки одного или нескольких изображений. Вы можете найти соответствующие примеры в их документации.

...