最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3+elementui-plus實(shí)現(xiàn)一個(gè)接口上傳多個(gè)文件功能

 更新時(shí)間:2023年07月11日 10:21:21   作者:今天不要寫(xiě)bug  
這篇文章主要介紹了vue3+elementui-plus實(shí)現(xiàn)一個(gè)接口上傳多個(gè)文件,先使用element-plus寫(xiě)好上傳組件,然后假設(shè)有個(gè)提交按鈕,點(diǎn)擊上傳文件請(qǐng)求接口,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

首先,先使用element-plus寫(xiě)好上傳組件,變量的定義我在這里就省略了都

<el-form-item prop="file" label="附件">
     <el-upload
         style="width:100%"
         class="upload-demo"
         drag
         ref="upload-demo"
         action=""
         v-model="taskForm.file"
         :file-list="fileLists"
         :before-upload="handleBeforeUpload"
         :http-request="uploadFile"
         :on-remove="handleRemove"
         :on-change="handleFileChange"
         :limit="3"
         :on-exceed="handleExceed"
         :headers="headers"
         multiple
     >
         <el-icon class="el-icon--upload"><upload-filled /></el-icon>
         <div class="el-upload__text">
         將文件拖拽到此處,或<em>點(diǎn)擊上傳</em>
         </div>
         <template #tip>
         <div class="el-upload__tip">
             最多上傳3個(gè)附件
         </div>
         </template>
     </el-upload>
 </el-form-item>

然后,綁定的函數(shù)都補(bǔ)充一下

function handleBeforeUpload (file) {
        //獲取上傳文件大小
        let fileSize = Number(file.size / 1024 / 1024);
        if (fileSize > 100) {
            ElMessage({ message: '文件大小不能超過(guò)100MB,請(qǐng)重新上傳。', type: 'warning'})
            return false
        }
    }
    function uploadFile (params) {
        if (params.file == null) {
            ElMessage({ message: '請(qǐng)選擇需要上傳的文件', type: 'warning'})
            return false
        }
    }
    function handleFileChange (file, fileList) {
        fileLists.value = fileList
    }
    function handleRemove (file, fileList) {
        fileLists.value = fileList
    }
    function handleExceed(files, fileList) {
        ElMessage({ message: '最多上傳3個(gè)文件,請(qǐng)刪除后重新上傳!', type: 'warning'})
    }

然后,假設(shè)有個(gè)提交按鈕,點(diǎn)擊上傳文件請(qǐng)求接口

 /** 提交按鈕 */
    function submitForm() {
        proxy.$refs["taskForms"].validate(valid => {
             // 表單其他必填字段校驗(yàn)一下
            if (valid) {
            // 加個(gè)loading
                loading.value = ElLoading.service({
                    lock: true,
                    text: 'Loading'
                })
                // 判斷是否上傳了文件 沒(méi)有就不用調(diào)用上傳
                if (fileLists.value.length > 0) {
                    console.log('list', fileLists.value)
                    let fileData = new FormData()
                    var isAdd = false // 區(qū)別是否上傳了新文件
                    var ids = [] // 編輯時(shí)存儲(chǔ)已經(jīng)回顯的文件ids
                    // 這里因?yàn)榫庉嫼托略鲞壿嫸加校栽诰庉嫊r(shí)需要區(qū)分,
                    // 到底是上傳了新文件,還是說(shuō)依舊是原來(lái)的文件,再提交一下表單,提交其他字段而已
                    // 而判斷是否是最新上傳的文件就依據(jù)是否有文件流raw
                    for(var i =0 ; i< fileLists.value.length; i++) {
                        // 通過(guò)是否有文件流raw判斷是否上傳新文件,是則append
                        if (fileLists.value[i].raw) {
                            isAdd = true
                            fileData.append('file', fileLists.value[i].raw)
                        } else {
                            // 拿到回顯文件(即非新上傳文件)的id
                            ids.push(fileLists.value[i].id)
                        }
                    }
                    console.log('ids=', ids)
                    fileData.append('type', 1) // type代表上傳操作是哪個(gè)模塊的:1任務(wù) 2總結(jié) 
                    // 若isAdd=true,則說(shuō)明添加了新文件,調(diào)用上傳
                    if (isAdd) {
                        uploadFileData(fileData).then((res) => {
                            console.log('upload', res)
                            if (res.code == 200) {
                                // 回顯文件id數(shù)組和新上傳文件得到的id數(shù)組合并
                                taskForm.value.file = ids.concat(res.result.ids)
                                console.log('file-ids',taskForm.value.file)
                                addAndEdit() // 調(diào)用保存其他字段信息的接口
                            }
                        })
                    } else {
                        taskForm.value.file = ids
                        addAndEdit() // 調(diào)用保存其他字段信息的接口
                    }
                } else {
                    taskForm.value.file = ''
                    addAndEdit() // 調(diào)用保存其他字段信息的接口
                }
            }
        })
    }

既然有編輯,那就應(yīng)該做回顯的邏輯,文件如何回顯到上傳組件上

// 點(diǎn)擊編輯
    function editTasks (row) {
        let fileData = new FormData()
        fileData.append('fileId', row.file)
        // 獲取文件名
        getFileData(fileData).then((res) => {
            console.log('test', res)
            if (res.code == 200) {
                // 就是這里,拿到文件名,然后文件回顯,我這里是通過(guò)接口拿到文件名,
                // 如果你能更直接的拿到文件名,直接執(zhí)行這個(gè)foreach即可
                res.result.forEach((item) => {
                // 回顯重點(diǎn),就是把你需要的東西push到fileList中
                    fileLists.value.push({ name: item.fileName, id: item.id })
                })
                console.log('edoite', taskForm.value, fileLists.value)
            }
        })
        taskId.value = row.id
        taskForm.value = {...row}
        taskTitle.value = '編輯任務(wù)'
        showTask.value = true
        taskForm.value.file = row.file !== 'null' ?  JSON.parse(row.file) : []    }

over 以上主要通過(guò)代碼說(shuō)明,可根據(jù)自己實(shí)際情況改造

到此這篇關(guān)于vue3+elementui-plus實(shí)現(xiàn)一個(gè)接口上傳多個(gè)文件的文章就介紹到這了,更多相關(guān)vue3 elementui-plus上傳多個(gè)文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能

    uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能

    微信小程序的存在許多功能上的限制和約束,有些情況不得不去使用webview進(jìn)行開(kāi)發(fā)實(shí)現(xiàn)需求,這篇文章主要給大家介紹了關(guān)于uniapp?vue3中使用webview在微信小程序?qū)崿F(xiàn)雙向通訊功能的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • vue調(diào)用swiper插件步驟教程(最易理解且詳細(xì))

    vue調(diào)用swiper插件步驟教程(最易理解且詳細(xì))

    有時(shí)候我們需要在vue中使用輪播組件,如果是在vue組件中引入第三方組件的話,最好通過(guò)npm安裝,從而進(jìn)行統(tǒng)一安裝包管理,下面這篇文章主要給大家介紹了關(guān)于vue調(diào)用swiper插件的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue element upload實(shí)現(xiàn)圖片本地預(yù)覽

    vue element upload實(shí)現(xiàn)圖片本地預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了vue element upload實(shí)現(xiàn)圖片本地預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • React/vue開(kāi)發(fā)報(bào)錯(cuò)TypeError:this.getOptions?is?not?a?function的解決

    React/vue開(kāi)發(fā)報(bào)錯(cuò)TypeError:this.getOptions?is?not?a?function

    這篇文章主要給大家介紹了關(guān)于React/vue開(kāi)發(fā)報(bào)錯(cuò)TypeError:this.getOptions?is?not?a?function的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 關(guān)于VueRouter導(dǎo)入的全過(guò)程

    關(guān)于VueRouter導(dǎo)入的全過(guò)程

    這篇文章主要介紹了關(guān)于VueRouter導(dǎo)入的全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue圖片file、base64與blob之間相互轉(zhuǎn)換過(guò)程

    vue圖片file、base64與blob之間相互轉(zhuǎn)換過(guò)程

    文章總結(jié)了Vue中圖片的file、base64與blob的相互轉(zhuǎn)換方法,包括file轉(zhuǎn)base64、base64轉(zhuǎn)file、base64轉(zhuǎn)blob、blob轉(zhuǎn)base64、file轉(zhuǎn)blob以及blob轉(zhuǎn)file,個(gè)人經(jīng)驗(yàn)分享,希望對(duì)大家有所幫助
    2025-12-12
  • vue踩坑日記之params傳遞參數(shù)問(wèn)題

    vue踩坑日記之params傳遞參數(shù)問(wèn)題

    這篇文章主要介紹了vue踩坑日記之params傳遞參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue+el使用this.$confirm,不能阻斷代碼往下執(zhí)行的解決

    vue+el使用this.$confirm,不能阻斷代碼往下執(zhí)行的解決

    這篇文章主要介紹了vue+el使用this.$confirm,不能阻斷代碼往下執(zhí)行的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 全面總結(jié)Vue3.0的多種偵聽(tīng)方式

    全面總結(jié)Vue3.0的多種偵聽(tīng)方式

    Vue提供了一種更通用的方式來(lái)觀察和響應(yīng)當(dāng)前活動(dòng)的實(shí)例上的數(shù)據(jù)變動(dòng):偵聽(tīng)屬性,下面這篇文章主要給大家介紹了關(guān)于Vue3.0多種偵聽(tīng)方式的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • vue router返回到指定的路由的場(chǎng)景分析

    vue router返回到指定的路由的場(chǎng)景分析

    這篇文章主要介紹了vue router返回到指定的路由的場(chǎng)景分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

陇南市| 肥乡县| 安国市| 大关县| 水富县| 铜鼓县| 西青区| 苗栗市| 盐源县| 天等县| 法库县| 梁河县| 越西县| 汾阳市| 思南县| 微山县| 大邑县| 江西省| 凌云县| 大竹县| 万盛区| 旺苍县| 湛江市| 眉山市| 巴塘县| 黄陵县| 古浪县| 庐江县| 新泰市| 德清县| 治多县| 保定市| 米泉市| 策勒县| 鹤岗市| 大新县| 乌拉特中旗| 富顺县| 东山县| 滦南县| 灵山县|