'Content-Type': 'multipart/form-data'类型
使用场景:在vue2.0中,有统一的请求封装文件,下面文件为请求封装的使用,因项目不同可以忽略(vue-element-admin架构)
html部分
<div class='public_normal_btn' @click='$refs.file_item.click()'>导入</div> <input style="display: none;" type="file" ref='file_item' multiple @input="file_change">
api.js接口声明文件
1 /** 2 * 导入 3 * @param {Object} data 4 */ 5 export function upload(data) { 6 return request({ 7 url: '/zbfp/api/v1/iden/echeck/check_upload', 8 method: 'post', 9 data, 10 headers: { 11 'Content-Type': 'multipart/form-data' 12 }, 13 }) 14 }
upload为上面的接口调用,文件数据传输需要以下几个步骤
1.声明 FormData 对象
2.将文件 append 到对象内部
3.将 formdata 对象当成参数传给参数
4.清除input的文件信息
5.刷新数据,查看更改后的数据
file_change() { //上传服务文件的逻辑 let files = this.$refs.file_item.files; let length = files.length; let index = 0; files.forEach(file => { //自定义的检测类型逻辑 if(file.name && file.name.split('.')[1] != 'xlsx'){ this.$message({ type:'error', message:'文件格式错误,请重新选择.xlsx的文件' }) return; } }) files.forEach(file => { // formdata形式上传时,必须使用FormData对象才可以 let formdata = new FormData(); formdata.append('file',file); upload(formdata).then(res => { index++; if(index == length) { this.$alert(length + '个服务包已上传,详情请查看服务日志', '提示', { confirmButtonText: '确定', callback: action => { this.$refs.file_item.value = '' this.page_render(); } }); index = 0; } }) }) },
标签:files,文件,data,formdata,file,input,上传 From: https://www.cnblogs.com/mumuyuyuyu/p/17292648.html