项目需求:最近接到的项目需求是点击模板导入按钮上传excel到数据表格中,但是不是点击之后立马就进行上传,而是需要先进行逻辑判断,之前做过很多文件上传,但是都是直接点击就进行文档的选择,下面把我的处理方案向大家介绍下:
处理思路:在使用element-ui的el-upload的时候,会自己绑定按钮,点击绑定的按钮就会进行文件的上传操作,我们要做的就是,自定义一个按钮,在操作自定义按钮的时候进行判断,满足条件再进行文件上传的调用,话不多说吗,上代码:
<el-button class="predictButton" style="margin: 0 10px" @click="templateInput">模版导入</el-button>
<el-upload
v-show="false"
class="filter-item"
name="file"
:action="uploadUrl()"
:headers="headers"
:on-error="uploadFalse"
:on-success="uploadSuccess"
:before-upload="beforeAvatarUpload"
accept=".xlsx, .xls"
:show-file-list="false"
:file-list="fileList"
>
<el-button ref="telUpload" class="predictButton" style="margin: 0 10px">模版导入</el-button>
</el-upload>
上述代码中可以看到定义了两个按钮,其中第一个按钮就是我们实际要操作的按钮,第二个按钮是我们上传操作的按钮,在我们自定义的按钮上绑定的点击事件对需要判断的逻辑进行判断
templateInput() {
this.judgeOption(this.chooseUserId, 3).then(res => {
this.$refs.telUpload.$el.click()
})
},
这里的 this.judgeOption 是我自己封装的promise进行逻辑判断,resolve的时候就会执行函数中的操作,其中 this.el.click() 相当于是调用el-upload中的自定义上传操作
当然,这也是一种处理方式,如果在实际项目中确实存在这种先判断再上传的需求,各位前端伙伴可以对此作一定的参考哦,有其他好的方案的欢迎在下方评论留言。
tips:对于Vue的文件上传操作,会在另一篇文章中详细为大家分享