【发布时间】:2012-12-26 17:48:34
【问题描述】:
我正在使用blueimp文件上传插件(基础版)来实现多文件上传。我正在尝试实现允许用户删除排队文件以进行上传的功能。我无法弄清楚如何正确访问文件数组。每次在 add 回调中,索引为 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();
});
});
【问题讨论】:
-
我解决了这个问题,请看我原来问题的顶部。
-
请发布您的解决方案作为答案。这就是未来读者寻找解决方案的地方。将它包含在问题中大多看起来令人困惑。谢谢! :)
-
我必须等待 8 小时才能回答我自己的问题 :)
-
公平点。我通常不这样做,但现在是假期,我想发挥一些员工魔法。我发布了答案并将其归功于您。如果我抓住了帖子的错误部分或其他内容,请随时进行编辑。 :)
标签: jquery jquery-plugins file-upload blueimp