Element ui 中 upload 组件一次请求批量上传
![]() | ![]() | ![]() | ![]() |
| 【性价之王】 | 【线路之王】 | 【价格之王】 | 【配置之王】 |
| 【免费之王】 | 【香港首推】 | 【梯子之王】 | 【独服之王】 |

Element ui 是由饿了么团队推出的基于 vue 的前端库,功能非常强大,其中的 upload 组件可以轻松的实现前端通过点击或者拖拽上传文件。不过 upload 组件默认的批量上传却是逐项上传,也就是你一次批量选择 5 个文件,那么会发送 5 次请求来分别上传这 5 个文件。
那么 Element ui 中 upload 组件怎么实现一次请求批量上传呢?这就需要通过自定义 http-request 来覆盖默认的上传行为,实现自定义上传,具体代码如下:
<template> <d2-container> <el-upload class="upload-demo" ="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.$s.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.$s.upload.submit(); fileUpload(this.fileData).then(response => { //console.log(response) }) },猜你可能想看的VPS
- 习梦云→75 元 月 1GB 内存 15GB SSD 空间 不限流量 1虚拟空间(主机)
- 95IDC→香港 CN2 服务器 香港 CN2 站群服务器促销 终生七折站群服务器[IP]
- 上新极光 KVM→美国洛杉矶 PZ 中美优化线路 KVM 123.45 美国VPS[主机]
- layer 子窗体界面大于父窗体界面的实现方法全球[VPS测评]
- CloudCone→$69 月-X3363 8GB 2TB 100M 无全球[VPS测评]
- 免费服务器 Arsys→免费一个月德国独立服务器 可选机器配置独立服务器[U]
- 疯狂猜成语 图猜成语一个焉字在圆圈里一颗红心在外面是什么成语?全球[VPS测评]
- 疯狂猜成语 图猜成语沙漠中有一株仙人掌和一颗枯树天上有太阳是什么成语?全球[VPS测评]
- 如何不需要使用插件就可以实现WordPress代码高亮功能全球[VPS测评]
- 狗云 VPS:五大 CN2 GIA 直连数据中心 圣何塞 CN2 GIA全球[VPS测评]
- Keyubu → 1.6$ 月 土耳其伊斯坦布尔 1C2G20G硬盘 注全球[VPS测评]
- 2019黑五: ZeptoVM 欧洲CN2 → 1C 512M RAM 全球[VPS测评]
- 人们为啥不爱吃海底捞了?海底捞上半年亏损达2.97亿 网友神评扎心全球[VPS测评]
- 曾经最大跨境电商平台团队收缩,只剩20人丨GoingGlobal周报全球[VPS测评]
- 跨境电商有哪些平台?十大跨境电商平台!全球[VPS测评]
- 为什么阿里云、腾讯云卖服务器可以挣到钱?全球[VPS测评]
- Linux系统下安装Java JDK全球[VPS测评]
- 长三角地区的算力需求规模到底有多大?全球[VPS测评]
- HostKvm,香港云地VPS,全场八折,三网直连,电信CN2,2核4G香港VPS[主机]
- 个人如何做跨境电商?全球[VPS测评]
- 好云:国内云服务器2核2G5M优惠,仅350元/年;香港/海外云服务器,香港VPS[主机]
- CentOS 7.x 系统安装和配置redis-7.0.4集群全球[VPS测评]
- tudcloud:香港vps/2核/2GB/20GB空间/不限流量/KV虚拟空间(主机)
- earidc怎么样?香港三网cn2vps带宽1M月付29元香港VPS[主机]
- 空空云怎么样?香港CN2-GIA VPS,带宽2M,月付15元香港VPS[主机]
- 中概股扫描网传拼多多正筹备跨境电商平台首站登陆美国美国VPS[主机]
- RAKsmart:1核1GB/40GB空间/不限流量/15Mbps/KV虚拟空间(主机)
- 私有云架设之优选拓普龙S465-24高密度存储服务器机箱评测解析全球[VPS测评]
- HostKvm:韩国香港vps10月份最新促销,海外VPS全场八折优惠韩国VPS[主机]
- 74块钱一年的云服务器可以用来做什么?全球[VPS测评]
转载请注明原文地址:http://140.238.13.167:12355/read-207556.html











