plupload - ограничить количество выбранных файлов - PullRequest
3 голосов
/ 13 сентября 2011

Это часть кода:

inprogress = false;

function getid(id) {
    return document.getElementById(id); 
}

var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'link-browse',
    max_file_size : '100mb',
    url : 'site/upload/process.php?dir=<?php echo $uplid; ?>',
    flash_swf_url : 'site/upload/plupload.flash.swf',
    silverlight_xap_url : 'site/upload/plupload.silverlight.xap',
});
uploader.bind('Init', function(up, params) {
    //$('filelist').innerHTML = "<div>Current runtime: " + params.runtime + "</div>";
});
uploader.bind('FilesAdded', function(up, files) {
    if(uploader.files.length <= 0){
        var element = document.getElementById('standby');
        element.parentNode.removeChild(element);
    }
    if(up.files.length > 4 || uploader.files.length > 4)
    {
        alert('Only 5 files per upload !');

        return false;
    }
    for (var i in files) {
        getid('filelist').innerHTML += '<div class="item" id="' + files[i].id + '"><div class="name">' + files[i].name + '</div><div onclick="removeme(\''+files[i].id+'\')" id="remove-'+files[i].id+'" class="remove"></div><div class="size">[ ' + plupload.formatSize(files[i].size) + ' ]</div><div class="percent"></div></div>';
    }
});
uploader.bind('UploadFile', function(up, file) {
    getid('submit-form').innerHTML += '<input type="hidden" name="file-' + file.id + '" value="' + file.name + '" />';
});
uploader.bind('UploadProgress', function(up, file) {
    getid(file.id).getElementsByTagName('div')[3].innerHTML = '<span>' + file.percent + "%</span>";
});
uploader.bind('StateChanged', function(uploader) {
        if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
         window.location = "./dl/<?php echo $uplid; ?>"
        }
    });
getid('link-upload').onclick = function() {
    if(uploader.files.length < 1){
        alert('Please select files first.');
        return false;
    }
    inprogress = true;
    uploader.start();
    return false;
};
uploader.init();
function removeme(id){
    if(inprogress) return false;
    if(uploader.files.length == 1)
    getid('filelist').innerHTML += '<div id="standby"></div>';

    var element = document.getElementById(id);
    element.parentNode.removeChild(element);

    var toremove = '';

    for(var i in uploader.files){
        if(uploader.files[i].id === id){
            toremove = i;
        }
    }
    uploader.files.splice(toremove, 1);
}

Я могу ограничить количество загружаемых файлов, И если у меня есть 4 выбранных файла, и я выбираю еще 5 -> это покажет ошибку

но если я сначала выберу, например, 14 файлов, они будут показаны в «списке файлов».

Как ограничить это, или где поставить "return false";

Спасибо за любую помощь:)

Ответы [ 4 ]

5 голосов
/ 21 октября 2013

- Working for Pupload v2.0

$("#uploader").pluploadQueue({
    runtimes: 'html5,html4',
    url: 'upload.php',
    max_file_size: '2mb',
    unique_names: false,
    rename: true,
    prevent_duplicates: true,
    init : {
        FilesAdded: function(up, files) {
          var max_files = 12;
          plupload.each(files, function(file) {
            if (up.files.length > max_files) {
              alert('You are allowed to add only ' + max_files + ' files.');
              up.removeFile(file);
            }
          });
          if (up.files.length >= max_files) {
            $('#pickfiles').hide('slow');
          }
        },
        FilesRemoved: function(up, files) {
          if (up.files.length < max_files) {
            $('#pickfiles').fadeIn('slow');
          }
        }
      },
    resize : {width : 700, height : 700, quality : 90},
    filters: [
        {
            title: "Image files",
            extensions: "jpg,jpeg,gif,png"
        }
    ]
});
3 голосов
/ 13 сентября 2011

Развернуть if(up.files.length > 4 || uploader.files.length > 4) до if(up.files.length > 4 || uploader.files.length > 4 || files.length > 4).

1 голос
/ 08 мая 2012

Просто используйте параметр max_file_count: 4, чтобы ограничить количество загружаемых файлов

0 голосов
/ 03 мая 2013

в ответ на ответ Роба В. up и uploader одинаковы, так как это экземпляр загрузчика, следовательно, избыточный;и было бы полезно также проверить (uploader.files.length + files.length) > 4, чтобы проверить, будет ли пара входящих файлов превышать 4 при учете уже «зарегистрированных» файлов (например, кто-то добавляет 2 файла, а затем 3 файла впоследствии).

Итак, в заключение, я бы порекомендовал

if(uploader.files.length > 4 || files.length > 4 || (uploader.files.length + files.length) > 4) {
...