由于el-upload一次只能上传一个文件,如果要上传大量文件就要同时发送大量的http请求,这样会增加服务端的负担,但如果一次批量上传大量文件,服务端要很久之后才能收到请求,所以我做了一个分批批量的上传,示例中一次上传10个文件,上传完成后发送下一个上传请求,再上传10个,这样就解决了一次发送大量http请求或一次批量上传大量文件后端和久才能收到请求的问题。文章最后附有github链接,链接中有示例工程,可直接运行。
<template>
<section>
<el-button type='primary' @click='uploadFileBtnClicked'>上传本地文件</el-button>
<el-dialog title='上传本地文件' width="40%" :visible.sync='dialogVisible' :before-close="handleClose"
:close-on-click-modal='false'>
<el-upload ref='upload' action='a' multiple accept=".xls,.xlsx" :file-list='fileList' :auto-upload="false"
:on-change="handleChange" :http-request="uploadFile" :before-upload="beforeUpload">
<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">只能上传excel文件</div>