实现多文件上传的功能,可以使用HTML5新增的File API和FormData API,这些API支持在不刷新页面的情况下上传多个文件,监听上传进度和上传结果。具体实现步骤如下:
创建一个input元素,设置type为file,多选属性为true,用于选择文件。
在获得文件列表后,循环遍历文件列表,创建FormData对象,并将每个文件添加到FormData中。
使用XMLHttpRequest对象把FormData提交给服务器进行处理,并监听上传进度和上传结果。
在提交FormData时,可以通过XMLHttpRequest对象的setRequestHeader方法设置请求头,以控制上传文件的类型和大小。
下面是一个简单的示例代码:
HTML代码:
<input id="fileInput" type="file" multiple>
<button id="uploadBtn">上传</button>
JavaScript代码:
const fileInput = document.getElementById('fileInput');
const uploadBtn = document.getElementById('uploadBtn');
uploadBtn.addEventListener('click', uploadFiles);
function uploadFiles() {
const files = fileInput.files;
const formData = new FormData();
for(let i = 0; i < files.length; i++) {
formData.append('files', files[i]);
}
const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload');
xhr.setRequestHeader('Content-Type', 'multipart/form-data'); // 设置请求头
xhr.upload.onprogress = function(e) {
console.log('上传进度:' + (e.loaded / e.total * 100) + '%');
}
xhr.onload = function() {
console.log('上传成功');
}
xhr.send(formData);
}
以上代码只是一个简单示例,要实现更完善的多文件上传功能,还需根据业务需求进行相应的优化。