vue-element-upload 文件上傳打開選擇文件彈框前進行提示或操作


在項目中使用文件上傳功能時,需求是不能直接彈出彈框,要先二次確認或進行提示。引申開來,即可在打開選擇文件彈框之前,做一系列操作。

實現思路在基於element-upload組件的基礎上,再加一個按鈕,觸發按鈕后進行選擇文件前的操作,操作完成后觸發upload的選擇文件。

 

具體效果:點擊‘導入‘時,提示必選項。

具體實現:

1、新寫一個‘導入’按鈕,以定位的形式遮擋上傳組件。這里是將element-upload進行了二次封裝。

組件使用:
<div class="importBox">
     <el-button type="primary" icon="el-icon-upload2" class="box_btn" @click="onImport">導入</el-button>
     <ImportExcel ref="importFile" class="box_upload"@getImportFile='getImportFile'/>
</div>

組件定義:
<template>
  <el-upload
    class="upload-demo"
    ref="fileRefs"
    :action="action"
    :show-file-list="false"
    :accept="acctype"
    :limit="limit"
    :http-request="uploadFileRes"
    :before-upload="beforeAvatarUpload"
    >
    <el-button :loading="uploadLoading" type="primary" >導入</el-button>
  </el-upload>
</template>

 

2、點擊‘導入’觸發事件。

// 按鈕-導入
    onImport() {
     // 可以先進行適合自己需求的操作,完成后再執行
    this.$refs['importFile'].$refs['fileRefs'].$refs['upload-inner'].handleClick()觸發選擇文件
this.$refs.searchForm.validate((valid) => { if (valid) { this.$refs['importFile'].$refs['fileRefs'].$refs['upload-inner'].handleClick() } }) },

3、解析:

this.$refs['importFile'].$refs['fileRefs'].$refs['upload-inner'].handleClick()

通過ref逐層觸發組件內按鈕的handleClick事件,注意區分['importFile']、['fileRefs'],其中['upload-inner'] 是 ImportExcel 組件內部按鈕的ref

可以將不同的ref在控制台打印出來,看具體內容。

 

總結:示例只是對選擇文件前的表單進行校驗,根據自己需求可以實現不同的文件選擇前的處理。持續探索,不斷進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM