如何在 运行 时间从上传列表中跳过或删除某些文件

How to skip or remove some file at run time from uploading list

我正在使用 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();
    }
});

我正在 删除 data.originalFiles finding 中的文件

注意:请注意)我没有使用任何ui provided by plugin (cancel, update, crop image, thumbnail)

已创建 fiddle 用于实验:http://jsfiddle.net/ChJ9B/219/

请帮我解决这个问题。

提前致谢!!!!

你应该只调用 data.abort(); 它应该完成工作。

或者您也可以拨打data.context.remove()

您可以使用.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。我没有 运行 代码,只是分享想法。