解決vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit()不生效問題
我要實(shí)現(xiàn)的功能是在上傳文件之前校驗(yàn)是否表格中存在重復(fù)的數(shù)據(jù),有的話,需要彈窗提示是否覆蓋,確認(rèn)之后繼續(xù)上傳,取消之后,就不再上傳。
項(xiàng)目中用的element-ui是V1.4.3
<el-upload class="upload-demo" drag ref="fileUpload" :action="urls.fileUpload" :on-success="handleUploadSuccess" :on-error="handleUploadError" :on-progress="progressUpload" :before-upload="beforeUpload" show-file-list multiple> <i class="el-icon-upload"></i> <div class="el-upload__text">點(diǎn)擊上傳,或者拖拽到這里</div> </el-upload>

代碼中我是將before-upload方法返回false,然后點(diǎn)擊確認(rèn)之后,調(diào)_this.$refs.fileUpload.submit();但是在點(diǎn)擊確定之后,文件還是沒有上傳,后面去看了element-ui源碼,發(fā)現(xiàn)before-upload方法如果返回false,submit()方法是會(huì)被攔截的。
還有第二個(gè)問題,就是取消時(shí)_this.$refs.fileUpload.clearFiles();我調(diào)的clearFiles()方法,這個(gè)方法會(huì)把文件列表全部清空,我只想刪除我當(dāng)時(shí)取消的那個(gè)文件。
后面將這兩句換成了如下兩句:

繼續(xù)上傳: _this.$refs.fileUpload.$children[0].post(file);
取消時(shí)在文件列表中刪除該文件:_this.$refs.fileUpload.handleRemove(file);
補(bǔ)充:VUE2.0 element upload使用
<template>
<div class="uptemp">
<el-upload
class="upload-demo"
ref="upload"
multiple="false"
action="/web/api/uploadFile"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-change="handleChange"
:before-upload="beforeUpload"
:file-list="fileList"
:auto-upload="false"
:multiple="false">
<el-button slot="trigger" size="small" type="primary">選取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">導(dǎo)入</el-button>
<div slot="tip" class="el-upload__tip">只能上傳jpg/png文件</div>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
fileList: []
}
},
mounted: function () {
//加載完頁(yè)面執(zhí)行的函數(shù)
},
methods: {
submitUpload() {
this.$refs.upload.submit();
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleChange(file, fileList){
console.log(file);
console.log(fileList);
},
beforeUpload: function (file) {
console.log(file)
//這里是重點(diǎn),將文件轉(zhuǎn)化為formdata數(shù)據(jù)上傳
let fd = new FormData()
fd.append('file', file)
this.$http.post('/web/api/uploadFile', fd).then((res) => {
console.log(res)
}, (res) => {
console.log(res)
});
return false;
}
},
components: {
// 組件
}
}
</script>
<style scoped>
</style>
<style>
.uptemp .el-upload-list {
position: absolute;
left: 140px;
top: 0;
width: 50%;
}
.uptemp {
position: relative;
}
.uptemp .el-upload-list .el-upload-list__item {
margin-top: 0;
}
</style>
總結(jié)
以上所述是小編給大家介紹的解決vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit()不生效問題,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue2項(xiàng)目導(dǎo)出操作實(shí)現(xiàn)方法(后端接口導(dǎo)出、前端直接做導(dǎo)出)
這篇文章主要給大家介紹了關(guān)于vue2項(xiàng)目導(dǎo)出操作實(shí)現(xiàn)方法的相關(guān)資料,文中介紹的是后端接口導(dǎo)出、前端直接做導(dǎo)出,通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-05-05
vue3?element-plus?實(shí)現(xiàn)表格數(shù)據(jù)更改功能詳細(xì)步驟
這篇文章主要介紹了vue3 element-plus實(shí)現(xiàn)表格數(shù)據(jù)更改功能,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
el-table表頭添加勾選框的實(shí)現(xiàn)示例
本文主要介紹了el-table表頭添加勾選框的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Vue.js手風(fēng)琴菜單組件開發(fā)實(shí)例
這篇文章主要為大家詳細(xì)介紹了Vue.js手風(fēng)琴菜單組件開發(fā)實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
基于Vue3實(shí)現(xiàn)無限滾動(dòng)組件的示例代碼
如果你在社交媒體上停留的時(shí)間過長(zhǎng),那么,你所在的網(wǎng)站很可能正在使用無限滾動(dòng)組件。這篇文章教你利用Vue3實(shí)現(xiàn)無限滾動(dòng)組件,感興趣的可以參考一下2022-09-09
vue實(shí)現(xiàn)無縫滾動(dòng)的示例詳解
這篇文章主要為大家詳細(xì)介紹了vue非組件如何實(shí)現(xiàn)列表的無縫滾動(dòng)效果,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09
Vue3播放m3u8視頻的兩種實(shí)現(xiàn)方式示例
這篇文章主要介紹了Vue3播放m3u8視頻的兩種實(shí)現(xiàn)方式,兩種視頻播放器組件分別是vue3-video-play和chimee-player,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01
vue中v-for和v-if不能在同一個(gè)標(biāo)簽使用的最新解決方案
這篇文章主要介紹了vue中v-for和v-if不能在同一個(gè)標(biāo)簽的最新解決方案,這里描述了兩種解決方案,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07

