Как пропустить или удалить какой-либо файл во время выполнения из списка загрузки - PullRequest
0 голосов
/ 28 июня 2018

Я использую blueimp plugin https://github.com/blueimp/jQuery-File-Upload/wiki/API

Мне нужно удалить некоторые файлы во время выполнения из очереди .

Когда статус code 17 (файл уже завершен) с сервера, этот конкретный файл должен быть удален.

Это то, что я пытался до сих пор безуспешно.

$('#fileupload').fileupload({
    url: 'url.php',
    maxChunkSize: 65536, // 120 KB,
    maxRetries: 10,
    dataType: 'json',
    multipart: false,
    sequentialUploads: true,
    add:function(){........},
    done:function(){........}
}).on('fileuploadchunkdone', function (e, data) {
    if(data.result.status == 17){
        var currentFileObject = data.files[0];
        var index = data.originalFiles.indexOf(currentFileObject); // find index in originalFiles
        data.originalFiles.splice(0,index);
        //data.files.length = 0; // if i uncomment this line some error will come, like undefined fileName
        data.submit();
    }
});

Я удаляю файл finding в data.originalFiles

ПРИМЕЧАНИЕ: ( обратите внимание ) Я не использую ui provided by plugin (cancel, update, crop image, thumbnail) и т. Д.

создана скрипка для экспериментов : http://jsfiddle.net/ChJ9B/219/

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо !!!!

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете использовать метод .abort(), чтобы отменить загрузку файлов.

В вашем случае вы можете сохранить весь запрос на загрузку файла на объект, а затем прервать его.

filesList.forEach(function(elm) {
    jqXHR[elm.name] =  $('#fileupload').fileupload('send', {files: elm});// you should save some id or timestamp
});

, а затем в обратном вызове события fileuploadchuckdone вы можете найти имя файла и затем прервать его из объекта jqXHR.

function (e, data) {
    if(data.result.status == 17){
        var currentFileName = data.files[0].name; // read the name somehow?
        jqXHRMap[currentFileName].abort();
    }
});

P.S. Я не запускал код, просто поделился идеей.

0 голосов
/ 02 июля 2018

Вы должны просто позвонить data.abort(); Это должно сделать работу.

Или вы также можете позвонить data.context.remove()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...