在我的Laravel项目中,我使用通过<input type="file">.
在我看来:
<input type="file" id="upload_requiremnt_files" name="upload_requiremnt_files[]" multiple>
<div id="upload_prev"></div>
上面的上传标签位于一个表单内,我从用户那里获得了更多数据。我使用 提交表单AJAX。从该AJAX函数中,我将所有数据传递给控制器。
JQuery功能:
var newFileList = [];
$(document).ready(function(readyEvent) {
$('#upload_requiremnt_files').on('change', function(changeEvent) {
$("#upload_prev").html('');
var filename = this.value;
var lastIndex = filename.lastIndexOf("\\");
if (lastIndex >= 0) {
filename = filename.substring(lastIndex + 1);
}
var files = changeEvent.target.files;
for (var i = 0; i < files.length; i++) {
$("#upload_prev").append('<span>' + '<div class="filenameupload" id="'+i+'">' + files[i].name + '<p class="close" ><i class="fa fa-window-close" aria-hidden="true"></i></p></div>' + '</span>');
}
});
$(document).on('click', '.close', function(closeEvent) {
console.log(closeEvent);
var id = $(this).parent().attr("id");
//alert(id);
console.log(id);
$(this).parents('span').remove();
var fileInput = $('#upload_requiremnt_files')[0];
newFileList = $('#upload_requiremnt_files')[0].files;
newFileList = Array.prototype.slice.call(newFileList);
newFileList.splice(id,1);
fileInput.files = [];
});
});
一旦我选择了多个文件,这些文件就会列出来。如果我单击特定文件的删除图标,它将删除。单击提交后,即使我从上传的文件中删除了一些文件,所有文件也会发送到控制器。但我只需要传递那些选定的文件。
冉冉说