首页 > 解决方案 > 如何在运行时从上传列表中跳过或删除某些文件

问题描述

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

我正在 删除文件findingdata.originalFiles

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

为实验创建了小提琴:http : //jsfiddle.net/ChJ9B/219/

请帮我解决这个问题。

提前致谢 !!!!

标签: javascriptphpjquerynode.jsjquery-file-upload

解决方案


您可以使用该.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();
    }
});

PS我没有运行代码,只是分享想法。


推荐阅读