Plupload - 仅限于一个文件

Joh*_*hnO 24 javascript plupload

我没有看到plupload API文档中有关限制上传文件数量的选项,任何数字,甚至1.

Doc失败了吗?或功能失败?如果它不存在,我会努力让这种情况发生,如果有人需要它..

Jon*_*ter 20

这是一个功能失败.我围绕jQuery API创建了一个包装器,这就是我为使它工作所做的.我的代码做了一些其他业务逻辑,但它应该足以让你设置启动.

基本上,绑定到FilesAdded事件并调用removeFile上传器对象(如果文件太多).我想我添加了50ms超时,因为它给我带来了尚未存在的文件的问题.

uploader.bind('FilesAdded', function (up, files) {
    var i = up.files.length,
        maxCountError = false;

    plupload.each(files, function (file) {

        if(uploader.settings.max_file_count && i >= uploader.settings.max_file_count){
            maxCountError = true;
            setTimeout(function(){ up.removeFile(file); }, 50);
        }else{
            // Code to add pending file details, if you want
        }

        i++;
    });

    if(maxCountError){
        // Too many files uploaded, do something
    }

});
Run Code Online (Sandbox Code Playgroud)

max_file_count 是我在创建它时添加到pluploader实例的东西.


编辑:我实际上必须为此做两种不同的方式.以上只允许一个人上传一定数量的文件(否则会产生错误).

此代码段的工作方式类似 - 但会删除现有文件并仅上传最新的文件:

uploader.bind('FilesAdded', function (up, files) {
    var fileCount = up.files.length,
        i = 0,
        ids = $.map(up.files, function (item) { return item.id; });

    for (i = 0; i < fileCount; i++) {
        uploader.removeFile(uploader.getFile(ids[i]));
    }

    // Do something with file details
});
Run Code Online (Sandbox Code Playgroud)

  • 第二种方式删除了我的所有文件,s.没有文件可供使用.仅为`i <(fileCount - 1)`运行循环只保留最近添加的文件. (2认同)

oct*_*ccl 20

其他方法:

 $(document).ready(function () {
    var uploader = new plupload.Uploader({
        ...
        multi_selection: false,
       ....
     });
Run Code Online (Sandbox Code Playgroud)

问候

  • 显然不适用于拖放...(在当前版本中) (2认同)

小智 13

基于Jonathon Bolster的第二个答案,我编写了这个更简单的片段来限制上传到最后选择的文件:

uploader.bind('FilesAdded', function(up, files) {
    while (up.files.length > 1) {
        up.removeFile(up.files[0]);
    }
});
Run Code Online (Sandbox Code Playgroud)


cod*_*der 6

你可以使用这个 max_file_count: 5,其中5是最大上传次数.

  • 这不起作用.`max_file_count`不是plupload中的标准设置 (4认同)
  • 如果您要限制一个文件,您可能还需要:'multi_selection:false,//在"打开文件"对话框中关闭多文件选择' (4认同)
  • 啊哈 - 我的立场得到了纠正.似乎jQuery UI小部件实现了"max_file_count"(https://github.com/moxiecode/plupload/blob/master/examples/jquery/queue_widget.html).此外,请注意添加代码或任何内容应通过编辑您的答案来完成(除非它是完全不同的) (3认同)