javascript - plupload 多个队列且上传文件数量受限

标签 javascript upload plupload

所以,我花了几个小时在网上寻找这个问题的解决方案,我尝试了很多不起作用的方法。 谁能告诉我如何允许 Plupload 接受多个队列,同时限制用户可以上传的文件数量?

最佳答案

您可以通过自定义事件使用单独的对象来全局监视每个队列中的 FilesAdded 事件:

例如,有两个 div 且全局限制为 5 个文件:

<div id="container1"></div>
<div id="container2"></div>

这将导致以下脚本:

<script language="javascript">
$(document).ready
(
function(){
// monitoring object
var uploadersMonitor =
    {
        uploaders : [], // uploader objects will be store in this array
        maxFiles : 5,  // no more than 5 files globally
        registerUploader : function (upldr){
            if(uploadersMonitor.uploaders.indexOf(upldr)==-1){
                uploadersMonitor.uploaders.push(upldr);
                }
            },
        computeTotalFilesNumber : function(){
            var sum=0;
            for(var i = 0; i<uploadersMonitor.uploaders.length; i++){
                sum+=uploadersMonitor.uploaders[i].files.length;
            }
            return sum;
        },
        processFilesAdded : function(upldr){
            var total = uploadersMonitor.computeTotalFilesNumber();
            if(total> uploadersMonitor.maxFiles)
            {
             alert('No more than '+uploadersMonitor.maxFiles+'total')
                     // remove excess files
             upldr.splice(upldr.files.length-(total-uploadersMonitor.maxFiles)); 
            }
        }
    }

$(document).on("uploaderFilesAdded",
    function(e,upldr){
        uploadersMonitor.registerUploader(upldr);
        uploadersMonitor.processFilesAdded(upldr);
        }
);

function initUploader(item){
    $(item).pluploadQueue({
            runtimes: 'html5,flash,gears,silverlight,browserplus',
            url: '/upload.php',
            max_file_size: '10mb',
                        init: {
                             FilesAdded : function (upldr,files){
                                $(document).trigger("uploaderFilesAdded",upldr);
                                }
                }
        });                 
};

initUploader($('#container1'));
initUploader($('#container2'));
});
</script>

请注意,您可能还需要处理 uploader 上的 Destroy 事件,以在监控对象中取消注册已销毁的 uploader

关于javascript - plupload 多个队列且上传文件数量受限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882519/

相关文章:

javascript - 如何在plupload中定义过滤器

javascript - 使用 javascript 动态添加 CSS

javascript - 提供反馈以从 Controller 查看

python - Django 上传表单,附加字段导致错误

javascript - jQuery - 使用实时而不是绑定(bind)?

jquery - Fileselect 后 Plupload Html5 预览

javascript - Fabric js 自定义旋转图标在初始加载时不显示

javascript - 所有字母的正则表达式

javascript - 如何根据浏览器宽度加载图像

java - Android 多文件上传到服务器