ホームページ >ウェブフロントエンド >jsチュートリアル >jsを使用してフォームに複数のファイルのアップロードを実装するサンプルコード
この記事では、主にフォームフォームの複数ファイルアップロードを実現するためのJavaScriptを詳しく紹介します。興味のある方は、以下に示すように、
フォームフォームの複数ファイルアップロードを参照してください。 formData オブジェクトは、一連のキーと値のペアを使用して完全なフォームをシミュレートし、Ajax を使用してフォームを送信できますff9c23ada1bcecdd1a0fb5d5a0f18437 フォームを使用して FormData オブジェクトを初期化し、ファイルをアップロードします
<!--文件上传--> <form id="uploadForm" enctype="multipart/form-data"> <p class="row" style="margin-top: 20px;"> <p class="form-group col-md-12" id="file"> <input type="hidden" name="_csrf-application" value="<?= $csrf ?>"> <p class="form-group field-uploadform-excelfiles" style="margin-left: 30px;"> <label class="control-label btn btn-primary" for="uploadform-excelfiles">选择文件</label> <input type="file" id="uploadform-excelfiles" name="UploadForm[excelFiles][]" multiple class="attachment-upload" accept=".xlsx"> <input type="button" id="fileUpload" value="上传文件" class="btn btn-success" style="margin-left: 15px;"> <p class="help-block"></p> <p id="fileName"></p> </p> </p> </p> <table role="presentation" class="table"><tbody id="files"></tbody></table> </form>注:
1. formData オブジェクトを使用してフォームをアップロードする場合は、enctype="multipart/form-data" 属性をフォームに追加する必要があります2. formData オブジェクトを使用してフォームをアップロードする場合は、名前に応じて値の入力を開始する必要があります。 アクションを使用してアップロードを開始することはできません。これにより、アップロードされたデータが変更イベントによって変更されます。 var fileList;
var allFile = [];
//FormData对象初始化
var form = document.getElementById("upload-form");
var formData = new FormData(form);
$("#uploadform-excelfiles").on('change', function (e) {
//获取表单数据并传入formData中
var norm = $("#norm").val();
var major = $("#major").val();
var type = $("#type").val();
formData.set("norm",norm);
formData.set("major",major);
formData.set("type",type);
var fileError = 0;
fileList = e.currentTarget.files;
$.each(fileList, function (index, item) {
var fileName = item.name;
var fileEnd = fileName.substring(fileName.indexOf("."));
//上传文件格式判断
if (fileEnd == ".xlsx") {
allFile.push(item);
$('#files').append( '<tr style="padding-top: 7px;">' +
'<td>'+fileName+'</td>' +
'<td>'+(item.size / 1024).toFixed(2)+'K</td>' +
'<td><input type="button" class="btn btn-danger delete" value="删除"></td>' +
'</tr>');
//追加文件
formData.append('UploadForm[excelFiles][]',item);
} else {
fileError++;
}
});
if (fileError > 0) {
alert("只能上传 “.xlsx” 格式的文件!");
document.getElementById("upload-form").reset();
return;
}
var fileCount = $('#files').find('tr').length;
$('#fileName').html('共上传 ' + fileCount + ' 个文件');
});
$('#files').on('click','.delete',function (e) { var saveFile = []; var norm = $("#norm").val(); var major = $("#major").val(); var type = $("#type").val(); var deleteName = e.target.parentNode.previousElementSibling.previousElementSibling.textContent; var deleteIndex; //将不删除的放入数组中 $.each(allFile,function (index, item) { if(item.name == deleteName){ deleteIndex = index; }else { saveFile.push(item); } }); allFile.splice(deleteIndex,1); //表单数据重置 formData.set("norm",norm); formData.set("major",major); formData.set("type",type); formData.delete('UploadForm[excelFiles][]'); //将不删除的数组追加的formData中 $.each(saveFile,function (index, item) { formData.append('UploadForm[excelFiles][]',item); }); e.target.parentNode.parentNode.remove(); var fileCount = $('#files').find('tr').length; $('#fileName').html('共上传 ' + fileCount + ' 个文件'); });
【関連おすすめ】1.無料のjsオンラインビデオチュートリアル
2.JavaScript中国語リファレンスマニュアル3. php.cn Dugu Jiijian ( 3) -JavaScript ビデオチュートリアル
以上がjsを使用してフォームに複数のファイルのアップロードを実装するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。