이 글은 주로 JavaScript양식의 다중 파일 업로드를 구현하는 방법을 자세히 소개합니다. 관심 있는 친구들은 참고할 수 있습니다.
양식 양식의 다중 파일 업로드, 구체적인 내용은 다음과 같습니다
formData 객체는 일련의 키-값 쌍을 사용하여 완전한 양식을 시뮬레이션한 다음 Ajax를 사용하여 form
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. 양식에 따라 이름에 따라 값을 입력해야 합니다. 작업을 사용하여 업로드를 시작할 수 없습니다. 나중에 업로드할 때 업로드된 데이터에 오류가 발생할 수 있습니다.
변경 이벤트로 변경된 파일 가져오기
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 + ' 个文件'); });
파일 업로드 이벤트
rree[관련 추천]
3. php.cn Dugu Jiujian (3) - JavaScript 동영상 튜토리얼
위 내용은 js를 사용하여 양식에 여러 파일 업로드를 구현하는 예제 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!