我正在使用 blueimp 文件上传插件(基本版)来实现多文件上传。我正在尝试实现允许用户删除排队文件以进行上传的功能。我无法弄清楚如何正确访问文件数组。每次在添加回调中,索引为 0,文件数组长度为 1(它只包含用户单击删除的文件)。我正在为每个排队到 div 的文件添加一个链接,该链接是可单击的,如果单击,则应删除该文件。
我的想法是创建一个带有文件索引的删除链接并将其从数组中删除,但由于上述问题,索引永远不会正确。我也尝试过文件名,但“on”回调中的文件名始终是第一个选择上传的文件——我必须弄清楚一些闭包范围。
如何以编程方式从上传队列中删除文件?
HTML:
<div id="fileBrowserWrapper">
<form id="myForm" action="#" method="post" enctype="multipart/form-data">
<input id="uploadDocBrowse" type="file" name="files[]" multiple/>
</form>
</div>
<div id="inputFilesBox"></div>
<div id="uploadFilesBox"></div>
和文件上传JavaScript:
$('#myForm').fileupload({
url: "/SomeHandler",
dataType: 'html',
autoUpload: false,
singleFileUploads: false,
replaceFileInput: false,
add: function (e, data) {
console.log("Number of files: " + data.files.length);
$.each(data.files, function (index, file) {
$('#uploadFilesBox').append("<div class='uploadBox' id='fileDiv_" + file.name + "'><div class='leftEle'><a href='#' id='link_" + index + "' class='removeFile'>Remove</a></div><div class='midEle'>" + file.name + "</div></div>")
.on('click', { filename: file.name, files: data.files }, function(event) {
var uploadFilesBox = $("#uploadFilesBox");
var remDiv = $("#fileDiv_" + event.data.filename);
remDiv.remove();
event.data.files.splice(0, 1);
}
});
});
data.context = $('#myButton')
.click(function () {
data.submit();
});
});