【发布时间】:2026-02-25 19:10:01
【问题描述】:
在我的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 = [];
});
});
一旦我选择了多个文件,这些文件就会被列出来。如果我单击特定文件的删除图标,它将被删除。在我点击提交后,即使我从那些上传的文件中删除了一些文件,所有文件都将被发送到控制器。但我只需要传递那些选定的文件。
对于这个问题,我也在 * 中经历了几个解决方案。但是找不到更好的解决方案。有人可以支持我吗?将不胜感激。
【问题讨论】:
标签: php html jquery laravel file-upload