Element-UI 多個(gè)el-upload組件自定義上傳不用上傳url并且攜帶自定義傳參(文件序號)
1. 需求: 有多個(gè)(不確定具體數(shù)量)的upload組件,每個(gè)都需要單獨(dú)上傳獲取文件(JS File類型),不需要action上傳到指定url,自定義上傳動(dòng)作和http操作。而且因?yàn)椴淮_定組件數(shù)量,所以每次也需要獲取是第幾個(gè)文件(索引),所以也需要實(shí)現(xiàn)附加索引這個(gè)參數(shù)
2. 實(shí)現(xiàn):如下
<el-col v-bind="grid2" v-for="(item, index) in list" :key="index"> # list 不知道一共有幾個(gè)列表項(xiàng) <el-form-item required :label="item.value" prop="randomAmount"> <el-upload class="upload-demo" action="none" #這里隨便寫 :http-request="handleFileUpload" #這里會(huì)覆蓋原本的上傳http的操作,從而實(shí)現(xiàn)自定義。 :limit="1" :on-remove="(file, fileList)=> {return onRemove(file, fileList, index)}" #這里的index是自定義索引參數(shù),這種寫法能夠攜帶自己的參數(shù) :on-change="(file, fileList)=> {return onChange(file, fileList, index)}"> <el-button round>點(diǎn)擊上傳</el-button> </el-upload> </el-form-item> </el-col> <el-col :span="24"> <el-button type="primary" @click="submitForm">確認(rèn)提交</el-button> </el-col> <script> export default { data() { return { // 暫存?zhèn)€el-upload的File fileUploaded: { 1: null, 2: null, 3: null, 4: null, 5: null // 可以多寫幾個(gè)(確定最多不會(huì)上傳超過某數(shù)量的文件) }, list:[ // 根據(jù)這個(gè)列表,渲染相應(yīng)數(shù)量的el-upload組件 { key: "1", value: "個(gè)體工商戶/企業(yè)營業(yè)執(zhí)照照片" }, { key: "2", value: "政府機(jī)關(guān)/事業(yè)單位/社會(huì)組織登記證書照片" }, // list 不知道一共有幾個(gè)列表項(xiàng),這部分是通過后端請求獲取的 ] } }, methods: { // 覆蓋默認(rèn)的http行為 handleFileUpload(options, index){ }, // 文件操作刪除 onRemove(file, fileList, index){ this.fileUploaded[index] = null }, // 文件上傳 onChange(file, fileList, index) { // 判斷上傳的文件是否是滿足格式要求(自定義) if(!file.name.includes('.zip')) { fileList.pop() # 清除上傳文件后展示出來的文件圖標(biāo) return this.$message.error("請上傳zip壓縮包!") } // 判斷上傳的文件是否超過大小限制(自定義) if (file.size >= 5*1024*1024){ // 5mb fileList.pop() return this.$message.error("大小不能超過5MB!") } // 判斷上傳的文件的狀態(tài)(一般不會(huì)出錯(cuò)) if(file.status != 'ready'){ fileList.pop() return this.$message.error("狀態(tài)錯(cuò)誤") } // 暫存文件 this.fileUploaded[index] = file.raw }, // 表單上傳,先判斷文件是否按要求上傳了,滿足要求的話,構(gòu)造formData submitForm(){ let formdata = new FormData() for (let i = 0; i < this.list.length; i++) { // 如果有文件未上傳,則報(bào)錯(cuò)。確保每個(gè)el-upload都上傳了文件 if (!this.fileUploaded[i]){ return this.$message.error('請上傳'+this.list[i].value) } formdata.append('subMerCertFiles', this.fileUploaded[i]) // 多個(gè)文件上傳 } // 后面調(diào)用接口,上傳formdata } } } </script>
演示
到此這篇關(guān)于Element-UI 多個(gè)el-upload組件自定義上傳,不用上傳url,并且攜帶自定義傳參(文件序號)的文章就介紹到這了,更多相關(guān)Element-UI 多個(gè)el-upload組件自定義上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Vue.js實(shí)現(xiàn)求職在線之職位查詢功能
Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM庫,它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。下面這篇文章主要給大家介紹了關(guān)于利用Vue.js實(shí)現(xiàn)求職在線之職位查詢功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07Vue MVVM模型與data及methods屬性超詳細(xì)講解
MVVM旨在利用WPF中的數(shù)據(jù)綁定函數(shù),通過從視圖層中幾乎刪除所有GUI代碼(代碼隱藏),更好地促進(jìn)視圖層開發(fā)與模式其余部分的分離,這篇文章主要介紹了Vue MVVM模型與data及methods屬性2022-10-10關(guān)于頁面刷新vuex數(shù)據(jù)消失問題解決方案
本篇文章主要介紹了關(guān)于頁面刷新vuex數(shù)據(jù)消失問題解決方案 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07Vue.js使用$.ajax和vue-resource實(shí)現(xiàn)OAuth的注冊、登錄、注銷和API調(diào)用
這篇文章主要介紹了 Vue.js使用$.ajax和vue-resource實(shí)現(xiàn)OAuth的注冊、登錄、注銷和API調(diào)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05vue 標(biāo)簽屬性數(shù)據(jù)綁定和拼接的實(shí)現(xiàn)方法
這篇文章主要介紹了vue 標(biāo)簽屬性數(shù)據(jù)綁定和拼接的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05Vue Element前端應(yīng)用開發(fā)之表格列表展示
在我們一般開發(fā)的系統(tǒng)界面里面,列表頁面是一個(gè)非常重要的綜合展示界面,包括有條件查詢、列表展示和分頁處理,以及對每項(xiàng)列表內(nèi)容可能進(jìn)行的轉(zhuǎn)義處理,本篇隨筆介紹基于Vue +Element基礎(chǔ)上實(shí)現(xiàn)表格列表頁面的查詢,列表展示和字段轉(zhuǎn)義處理。2021-05-05