We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近在做项目的时候有一个需求,需要导入word文档,并且需要支持多选。element-ui 的 upload 组件支持多选文件,只需要配置参数 multiple 为 true 即可。但是这个组件默认会将多选的文件分多次进行上传,于是就会存在多次的上传请求,由于后台的接口要求是一次请求能够上传多个文件,且我们也知道请求多了会对服务器造成更大的压力,因而基于多种原因,这个 upload 的上传行为得进行改造一番。
element-ui
upload
multiple
true
改造前的结果:同时上传2个文件,会发出2次对接口的请求,每次请求里包含了一个文件。
改造后的结果:同时上传2个文件,会发出一次接口请求,接口入参里包含2个文件。
html部分:
<el-upload class="upload-demo list-uploadbtn" ref="upload" :action="curBastUrl" :auto-upload="false" :on-remove="updataRemove" :before-upload="beforeUpload" :on-change="updatachange" :file-list="fileList" :multiple="true"> <el-button size="small">点击上传</el-button> </el-upload> <el-button type="primary" @click="submitUpload">确 定</el-button>
js部分:
submitUpload() { // 导入 let formData = new FormData(); // 用FormData存放上传文件 this.fileList.forEach(file => { formData.append('file', file.raw) }) formData.append('categoryDirectory', this.filedata.categoryDirectory) // importCase是上传接口 importCase(formData).then((res) => { //手动上传无法触发成功或失败的钩子函数,因此这里手动调用 this.updataSuccess(res.data) }, (err) => { }) }
关键代码说明:
auto-upload
false
file-list
action
data
on-success
on-error
submitUpload
FormData
fileList
<el-upload class="upload-demo list-uploadbtn" ref="upload" :action="curBastUrl" :auto-upload="false" :http-request="uploadFile" :on-remove="updataRemove" :before-upload="beforeUpload" :on-change="updatachange" :multiple="true"> <el-button size="small">点击上传</el-button> </el-upload> <el-button type="primary" @click="submitUpload">确 定</el-button>
submitUpload() { // 导入 let tempData = this.filedata this.filedata = new FormData() // 用FormData存放上传文件 this.$refs.upload.submit() // 会循环调用uploadFile方法,多个文件调用多次 this.filedata.append('categoryDirectory', tempData.categoryDirectory) // importCase是上传接口 importCase(this.filedata).then((res) => { //手动上传无法触发成功或失败的钩子函数,因此这里手动调用 this.updataSuccess(res.data) }, (err) => { }) } uploadFile(file) { this.filedata.append('file', file.file) }
http-request
submit
The text was updated successfully, but these errors were encountered:
No branches or pull requests
最近在做项目的时候有一个需求,需要导入word文档,并且需要支持多选。
element-ui
的upload
组件支持多选文件,只需要配置参数multiple
为true
即可。但是这个组件默认会将多选的文件分多次进行上传,于是就会存在多次的上传请求,由于后台的接口要求是一次请求能够上传多个文件,且我们也知道请求多了会对服务器造成更大的压力,因而基于多种原因,这个upload
的上传行为得进行改造一番。先来看下改造前后的结果
改造前的结果:同时上传2个文件,会发出2次对接口的请求,每次请求里包含了一个文件。
改造后的结果:同时上传2个文件,会发出一次接口请求,接口入参里包含2个文件。
方法一:通过配置file-list(推荐使用)
html部分:
js部分:
关键代码说明:
auto-upload
设置为false
用于关闭组件的自动上传;file-list
配置一个数组用于接收上传的文件列表;multiple
设置为true
表示支持多选文件;action
配置为完整的上传接口url,不配置会报错data
、on-success
、on-error
等参数,因为手动上传不会用到这些配置信息;submitUpload
,创建一个FormData
把fileList
的文件存进去。方法二:通过配置http-request
html部分:
js部分:
关键代码说明:
http-request
自定义上传方法;submitUpload
,创建一个FormData
, 调用upload
组件的submit
方法的时候会循环调用http-request
配置的方法,从而往FormData
里存放文件。The text was updated successfully, but these errors were encountered: