一、之前遇到的一些問(wèn)題

項(xiàng)目中多出有上傳文件的需求,使用現(xiàn)有的UI框架實(shí)現(xiàn)的過(guò)程中,不知道什么原因,總會(huì)有一些莫名其妙的bug。比如用某上傳組件,明明注明(:multiple="false"),可實(shí)際上還是能多選,上傳的時(shí)候依然發(fā)送了多個(gè)文件;又比如只要加上了(:file-list="fileList")屬性,希望能手動(dòng)控制上傳列表的時(shí)候,上傳事件this.refs.[upload(組件ref)].submit()就不起作用了,傳不了。總之,懶得再看它怎么實(shí)現(xiàn)了,我用的是功能,界面本身還是要重寫(xiě)的,如果堅(jiān)持用也會(huì)使項(xiàng)目多很多不必要的邏輯、樣式代碼……
之前用Vue做項(xiàng)目用的視圖框架有element-ui,團(tuán)隊(duì)內(nèi)部作為補(bǔ)充的zp-ui,以及iview。框架是好用,但是針對(duì)自己的項(xiàng)目往往不能全部拿來(lái)用,尤其是我們的設(shè)計(jì)妹子出的界面與現(xiàn)有框架差異很大,改源碼效率低又容易導(dǎo)致未知的bug,于是自己就抽時(shí)間封裝了這個(gè)上傳組件。
二、代碼與介紹
父組件
<template>
<div class="content">
<label for="my-upload">
<span>上傳</span>
</label>
<my-upload
ref="myUpload"
:file-list="fileList"
action="/uploadPicture"
:data="param"
:on-change="onChange"
:on-progress="uploadProgress"
:on-success="uploadSuccess"
:on-failed="uploadFailed"
multiple
:limit="5"
:on-finished="onFinished">
</my-upload>
<button @click="upload" class="btn btn-xs btn-primary">Upload</button>
</div>
</template>
<script>
import myUpload from './components/my-upload'
export default {
name: 'test',
data(){
return {
fileList: [],//上傳文件列表,無(wú)論單選還是支持多選,文件都以列表格式保存
param: {param1: '', param2: '' },//攜帶參數(shù)列表
}
},
methods: {
onChange(fileList){//監(jiān)聽(tīng)文件變化,增減文件時(shí)都會(huì)被子組件調(diào)用
this.fileList = [...fileList];
},
uploadSuccess(index, response){//某個(gè)文件上傳成功都會(huì)執(zhí)行該方法,index代表列表中第index個(gè)文件
console.log(index, response);
},
upload(){//觸發(fā)子組件的上傳方法
this.$refs.myUpload.submit();
},
removeFile(index){//移除某文件
this.$refs.myUpload.remove(index);
},
uploadProgress(index, progress){//上傳進(jìn)度,上傳時(shí)會(huì)不斷被觸發(fā),需要進(jìn)度指示時(shí)會(huì)很有用
const{ percent } = progress;
console.log(index, percent);
},
uploadFailed(index, err){//某文件上傳失敗會(huì)執(zhí)行,index代表列表中第index個(gè)文件
console.log(index, err);
},
onFinished(result){//所有文件上傳完畢后(無(wú)論成敗)執(zhí)行,result: { success: 成功數(shù)目, failed: 失敗數(shù)目 }
console.log(result);
}
},
components: {
myUpload
}
}
</script>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:Vue封裝一個(gè)簡(jiǎn)單輕量的上傳文件組件的示例-創(chuàng)新互聯(lián)
文章URL:http://chinadenli.net/article6/dsjeig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、App設(shè)計(jì)、面包屑導(dǎo)航、微信公眾號(hào)、自適應(yīng)網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容