如何在队列中的所有图像上传到swfupload后调用函数

时间:2011-07-01 11:25:22

标签: php jquery swfupload

我正在使用此代码,我希望在队列中的所有图像上传后调用函数。


$(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'); }) });

3 个答案:

答案 0 :(得分:0)

我建议使用像uplodify

这样的插件

它在上传一个或多个图像后提供回调功能。您可以在他们的文档中找到相关的示例。

答案 1 :(得分:0)

获取您上传的文件的数量,并在uploadComplete事件处理程序中跟踪它被调用的次数,并检查它是否等于计数。

答案 2 :(得分:0)

添加处理程序:

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