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();
});
});