javascript - 如何在运行时从上传列表中跳过或删除某些文件
问题描述
我正在使用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/
请帮我解决这个问题。
提前致谢 !!!!
解决方案
您可以使用该.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我没有运行代码,只是分享想法。
推荐阅读
- android - 格式化字符串时出现 java.lang.NumberFormatException
- go - 如何将2个文件合并或组合成一个文件
- c# - 创建一个带有 Timeout.Infinite 周期的 .NET Threading.Timer
- c# - 基于配置的 C# MVC 动态路由
- java - java中的消息格式以及如何在Golang中复制它
- visual-studio - ReSharper 的 NUnit 运行程序编译失败错误
- c++ - 模板结构中的零大小成员变量
- google-chrome - Chrome 控制台 - 哪个快捷方式?
- amazon-s3 - 在大量存储桶上启用 S3 版本控制
- c++ - 为什么这些算法的运行速度比它们应该的要快?