获取plupload队列中剩余文件的数量

时间:2013-10-07 12:47:32

标签: javascript jquery plupload

现在我在plupload js中有这样的东西:

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

但当然,它不起作用。因为我不知道如何减少剩余文件,或者确切地知道如何首先获取队列中所有文件的数量,所以我可以-1它们并使用初始值进行操作。怎么做?

3 个答案:

答案 0 :(得分:1)

在FileUploaded事件中检查 up.total.queued

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

答案 1 :(得分:0)

你必须绑定一个事件并创建一个计数器

完整答案是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!');
    }
});

答案 2 :(得分:0)

使用UI.Plupload你可以做...

$( '#载')。plupload( 'getUploader')。total.queued