multiple属性仅启用多文件选择功能,不定义上传结构;需配合FormData和后端逻辑实现多文件上传,name建议用复数形式,浏览器以FileList提供选中文件。

HTML5 中 multiple 属性本身不定义上传结构,它只是让文件输入控件支持选择多个文件;真正的多文件上传结构由表单提交方式(如 FormData)和后端接收逻辑共同决定。
input 元素中启用 multiple 的基本写法
在 <input type="file"> 上添加 multiple 属性即可允许用户一次选择多个文件:
注意:name 属性值建议使用复数形式(如 files),便于后端识别为文件数组;浏览器会将选中的多个文件以 FileList 对象形式挂载到该 input 元素的 files 属性上。
立即学习“前端免费学习笔记(深入)”;
前端通过 FormData 构建多文件上传数据
原生表单提交虽能上传多个文件,但无法自定义字段或控制上传过程;更常用的是结合 FormData 和 XMLHttpRequest 或 fetch:
- 遍历
input.files,逐个追加到FormData实例中 - 每个文件可使用相同字段名(如
files),后端据此解析为数组 - 也可为每个文件附加额外元数据(如序号、分类标识)
示例代码片段:
const form = new FormData();
for (let file of input.files) {
form.append('files', file); // 同名多次 append
}
后端接收时需适配多文件结构
服务端框架对多文件的支持方式不同,关键点在于:
- 确保请求头为
multipart/form-data(FormData自动设置) - 后端需按字段名(如
files)提取全部同名文件,而非只取第一个 - Node.js(Express + multer)、PHP(
$_FILES['files']是数组)、Python(Flask 的request.files.getlist())均有对应处理方法
常见注意事项与兼容性提醒
multiple 属性在所有现代浏览器中均受支持(IE10+),但需注意:
- 移动端部分 Android 浏览器早期版本对多选支持不稳定,建议降级为单次多选或提示
- 不能通过 JS 直接设置
input.files(只读),只能由用户触发选择 - 若同时使用
webkitdirectory,则变为目录上传,与multiple行为不同


















