plupload removeFiles - PullRequest
       22

plupload removeFiles

2 голосов
/ 13 января 2012

Я пытаюсь удалить файлы с недопустимыми расширениями в событии FilesAdded.(Я не могу использовать параметр фильтра, так как мне нужен эксклюзивный список).

У меня есть код, подобный следующему:

uploader.bind('FilesAdded', function(up, files) {
    var count = files.length;
    var i = 0;
    for (i;i<count;i++) {
        var validExt = validate(files[i].name);
        if(!validExt){

Мне нужно удалить добавленные файлы, еслирасширения не действительны.Я пробовал следующее:

uploader.splice(i,1)
uploader.removeFile(files[i]);
uploader.refresh();

Событие FilesRemoved вызывается, но удаленные файлы по-прежнему загружаются с помощью uploader.start ().

Я не знаю, является ли этоошибка в программе или слишком малопонятный, чтобы ожидать простого ответа, но если кто-то может помочь, я был бы очень благодарен.Я не думаю Я упускаю что-то очевидное.

Спасибо.

Ответы [ 5 ]

5 голосов
/ 29 августа 2013

Несколько вещей ...

1-й, вы должны связать событие filesAdded после вызова функции init ().

uploader.init();

uploader.bind('FilesAdded', function (up, files) {...}

2-й, вы можете отфильтровать расширение файлов, используя проп-фильтры при определении plupload

uploader = new plupload.Uploader({
        ...,
        filters: [
            { title: "Image files", extensions: "jpeg,jpg,gif,png" }
        ],
        ...
    });

3-й, вот рабочий пример удаления файлов из plupload

$.each(uploader.files, function (i, file) {
    if (file && file.id != currentFile.id) {
        uploader.removeFile(file);
    }
});

Ура!

2 голосов
/ 04 июня 2014

Когда нет процесса загрузки, и вы хотите удалить все файлы из очереди из списка загрузчиков:

var queueLength = uploader.files.length;

для (i = 0; i

if (uploader.files [0] && uploader.files [0]! == undefined) {

uploader.removeFile(uploader.files [0]);

}

}

Примечание. При попытке удаления файлов по индексу некоторыефайлы остаются в списке;поскольку каждый раз, когда элемент файла удаляется из списка, он обновляется и индексы восстанавливаются.

1 голос
/ 27 июля 2012

Вы можете использовать обратный вызов "QueueChanged", у меня это тоже работает.

uploader.bind('QueueChanged', function(up){

  var file_count = up.files.length;
  for(i = 0; i < file_count; i++) {
    if(i != (file_count - 1)) up.removeFile(up.files[i]);
  }

});
1 голос
/ 18 февраля 2012

Вам необходимо передать идентификатор файла, который вы хотите удалить, чтобы удалить файл:

uploader.removeFile(files[i].id)

0 голосов
/ 06 февраля 2013
uploader.bind('FilesAdded', function(up, files) {
    if( files.length > 1 )
    {
        $.each(files, function(i, file) {
            up.removeFile(file);    
        });
    }
});
...