### 文件上传
- 利用 input 标签设置 type="file" 打开本地的资源管理器;
- input 标签的 accept 属性可以设置上传什么类型的文件;accept 属性并不会验证选中文件的类型. 他只是为开发这提供了一种引导用户做出期望行为的方式而已, 用户还是有办法绕过浏览器的限制.
- input file 标签一般对应着一个上传文件;
- input 标签的 multiple 属性设置该字段可接受多个上传文件;
- input 选择完文件后标签的 target.files 中存在当前选中的文件内容(信息),此时也可以进行判断上传文件类型及上传文件大小等;
#### html5的FileReader()读取文件
### 批量上传
#### 单选文件批量上传
每个按钮只选择一个文件渲染到上传列表再进行批量上传
##### 单选文件
1. 创建input file按钮,弹窗选择文件;
2. 选择文件后拿到文件名追加到上传文件列表;
3. 在创建一个新的 input file按钮,隐藏之前的已存储文件的按钮;
4. 把隐藏的input数据放入内存要上传的数据列表list中
##### 批量上传
1. new 一个formData
2. 构建文件表数组,放入fornData 的 batchUploadEdocReq 中
3. 通过上传列表找到所有上传信息
4. 遍历 input file ,把他们的file[0]放入formData 的fileList中
5. 发送 ajax 请求,把 formData 放入到 data 中
6. 注意设置: contartType = false; processData = false;
```
this.accompanyingDecumAjaxObj = {
decId : this.id,
edocList : this.List
}
var formData = new FormData();
formData.append('batchUploadEdocReq',JSON.stringify(this.accompanyingDecumAjaxObj))
for(let i=0; i< this.imputFileListInfo.length; i++){
formData.append('fileList',this.imputFileListInfo[i][0]);
}
var _this = this;
var ajaxUrl = "URL";
$.ajax({
type : "POST",
url : ajaxUrl,
data : formData,
cache : false,
timeout: 120000,
contentType : false,
processData : false,
success : function(data) {
},
error : function(data) {
}
});
}
```
#### 多选文件批量上传
来源:CSDN
作者:Chen_Devin
链接:https://blog.csdn.net/lily__an/article/details/100173068