Element ui是由饿了么团队推出的基于vue的前端库,功能非常强大,其中的upload组件可以轻松的实现前端通过点击或者拖拽上传文件。不过upload组件默认的批量上传却是逐项上传,也就是你一次批量选择5个文件,那么会发送5次请求来分别上传这5个文件。
那么Element ui中upload组件怎么实现一次请求批量上传呢?这就需要通过自定义http-request来覆盖默认的上传行为,实现自定义上传,具体代码如下:
<template>
<d2-container>
<el-upload
class="upload-demo"
ref="upload"
action=""
:http-request="customUpload"
:before-upload="beforeFileUpload"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-success="handleSuccess"
:file-list="fileList"
:auto-upload="false"
accept=".dbf"
multiple>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
<!--div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>-->
</el-upload>
</d2-container>
</template>
<script>
export default {
data() {
return {
fileList: [],
fileData: new FormData()
};
},
methods: {
submitUpload() {
this.$refs.upload.submit();
fileUpload(this.fileData).then(response => {
})
},
beforeFileUpload(file){
let extension=file.name.substring(file.name.lastIndexOf('.')+1);
const isDbf = extension === "dbf";
const isLt10M = file.size / 1024 / 1024 < 10
if (!isDbf) {
this.$message.error('上传的数据文件只能是dbf格式!');
}
if (!isLt10M) {
this.$message.error('上传的单个数据文件大小不能超过10MB!');
}
return isDbf && isLt10M;
},
handleRemove(file, fileList) {
},
handlePreview(file) {
},
handleSuccess(response,file, fileList) {
this.$message.success('上传成功')
},
customUpload(file) {
this.fileData.append('files[]', file.file)
return false
}
}
}
//引入axios
import request from '@/plugin/axios'
export function fileUpload(file) {
return request({
method: 'post',
url: 'http://localhost/api/import',
headers: {'Content-Type':'multipart/form-data'},
data: file
})
}
</script>
代码说明:
1.配置自定义的http-request函数:
:http-request="customUpload"
2.在data中添加一项参数:fileData,类型是FormData:
fileData: new FormData()
3.实现customUpload方法,将上传文件信息拼接到fileData中。
customUpload(file) {
this.fileData.append('files[]', file.file)
return false
}
4.定义axios异步上传方法:
export function fileUpload(file) {
return request({
method: 'post',
url: 'http://localhost/api/import',
headers: {'Content-Type':'multipart/form-data'},
data: file
})
}
5.在submitUpload中调用4中定义的上传方法:
submitUpload() {
this.$refs.upload.submit();
fileUpload(this.fileData).then(response => {
//console.log(response)
})
},
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Element ui中upload组件一次请求批量上传
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Element ui中upload组件一次请求批量上传