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

vue3+uniapp 上傳附件的操作代碼

 更新時間:2024年01月11日 16:58:21   作者:tingkeiii  
uni-file-picker搭配uni.uploadFile在使用問題上踩了不少坑,我至今還是沒辦法在不改uniapp源碼基礎(chǔ)上實現(xiàn)限制重復(fù)文件的上傳,這篇文章介紹vue3+uniapp 上傳附件的操作代碼,感興趣的朋友一起看看吧

uni-file-picker搭配uni.uploadFile在使用問題上踩了不少坑,我至今還是沒辦法在不改uniapp源碼基礎(chǔ)上實現(xiàn)限制重復(fù)文件的上傳。因為始終怎么限制,uni-file-picker綁定的v-model的值fileList,好像只要上傳了文件展示就一定會回顯那一個附件。還有一個問題,就是上傳的進(jìn)度條并不能正常工作。直接css隱藏算了眼不見心不煩

多次試圖馴服該組件,發(fā)現(xiàn)如果要把上傳好的文件列表同步給父組件,就不要去傳組件綁定的value值,因為這會出問題,把這個變量當(dāng)做單純展示的作用就好了,父子組件的數(shù)據(jù)傳輸,可以用雙向綁定,文件的增刪改都操作這個雙向綁定的數(shù)據(jù)。

子組件:封裝的文件上傳

c-upload.vue

<template>
  <uni-file-picker
      v-model="fileList"
      :auto-upload="false"
      file-mediatype="all"
      mode="grid"
      @delete="delFile"
      @select="select"
  >
    <text class="iconfont icon-zengjiatianjiajiahao"></text>
  </uni-file-picker>
</template>
<script setup>
import {ref, reactive, watch} from "vue";
const props = defineProps({
  appendixEntityList: {default: []},
});
const emit = defineEmits(["update:appendixEntityList"]);
let fileList = ref([]);
// 選擇上傳觸發(fā)函數(shù)
const select = (e) => {
  // 根據(jù)所選圖片的個數(shù),多次調(diào)用上傳函數(shù)
  let promises = [];
  for (let i = 0; i < e.tempFilePaths.length; i++) {
    const promise = uploadFiles(e.tempFilePaths, i);
    promises.push(promise);
  }
  Promise.all(promises).then(() => {
  });
};
// 上傳函數(shù)
const uploadFiles = async (tempFilePaths, i) => {
  await uni.uploadFile({
    url: '/api/xxx/xxxx/xxxx', //后端用于處理圖片并返回圖片地址的接口
    filePath: tempFilePaths[i],
    name: "file",
    header: {
      Authorization: "Bearer " + uni.getStorageSync("token") || "",
      ContentType: "application/x-www-form-urlencoded",
      skipToken: true,
    },
    success: (res) => {
      let v = JSON.parse(res.data); //返回的是字符串,需要轉(zhuǎn)成對象格式
      if (v.code == 200) {
        props.appendixEntityList.push({
          appendixId: v.data.id,
          appendixOriginal: v.data.original,
          appendixUrl: v.data.attachUrl,
        });
        emit("update:appendixEntityList", props.appendixEntityList);
      }
    },
    fail: () => {
      console.log("err");
    },
  });
};
//文件列表回顯
const fileListEcho = () => {
  if (props.appendixEntityList.length > 0) {
    fileList.value = [];
    props.appendixEntityList?.forEach((v) => {
      //改成官方文檔要求的格式。才能回顯附件
      fileList.value.push({
        name: v?.appendixOriginal,
        extname: v?.appendixType,
        url: v?.appendixUrl,
      });
    });
  }
};
// 移出圖片函數(shù)
const delFile = async (val) => {
  //在提交數(shù)組中刪除那個被刪的文件
  props.appendixEntityList.some((v, i) => {
    if (v.appendixOriginal === val.tempFile.name) {
      props.appendixEntityList.splice(i, 1);
      emit("update:appendixEntityList", props.appendixEntityList);
      return true;
    }
  });
};
watch(
    () => props.appendixEntityList,
    (newVal) => {
      fileListEcho();
    },
);
</script>
<style lang="scss" scoped>
.icon-zengjiatianjiajiahao {
  font-size: 42rpx;
  color: #a2a3a5;
  position: absolute;
  right: 0;
  top: -50rpx;
}
</style>

父組件:

    <!--        上傳-->
        <c-upload
          ref="uploadRef"
          v-model:appendixEntityList="form.appendixEntityList"
        ></c-upload>

到此這篇關(guān)于vue3+uniapp 上傳附件的文章就介紹到這了,更多相關(guān)vue3+uniapp 上傳附件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2.0實現(xiàn)檢測無用的代碼并刪除

    vue2.0實現(xiàn)檢測無用的代碼并刪除

    這篇文章主要介紹了vue2.0實現(xiàn)檢測無用的代碼并刪除方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue.js中的extend綁定節(jié)點并顯示的方法

    Vue.js中的extend綁定節(jié)點并顯示的方法

    在本篇內(nèi)容里小編給大家整理了關(guān)于Vue.js中的extend綁定節(jié)點并顯示的方法以及相關(guān)知識點,需要的朋友們學(xué)習(xí)下。
    2019-06-06
  • Vue3使用Proxy構(gòu)建高效響應(yīng)式數(shù)據(jù)的示例代碼

    Vue3使用Proxy構(gòu)建高效響應(yīng)式數(shù)據(jù)的示例代碼

    在 Vue 3 中,Proxy 主要用于 攔截對象的基本操作,包括 屬性讀?。╣et)、修改(set)、刪除(deleteProperty) 等,本文給大家介紹了Vue3使用Proxy構(gòu)建高效響應(yīng)式數(shù)據(jù)的操作教程,需要的朋友可以參考下
    2025-03-03
  • 詳解解決Vue相同路由參數(shù)不同不會刷新的問題

    詳解解決Vue相同路由參數(shù)不同不會刷新的問題

    這篇文章主要介紹了詳解解決Vue相同路由參數(shù)不同不會刷新的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • vuex的使用和簡易實現(xiàn)

    vuex的使用和簡易實現(xiàn)

    這篇文章主要介紹了vuex的使用和簡易實現(xiàn),幫助大家更好的理解和使用vuex,感興趣的朋友可以了解下
    2021-01-01
  • npm安裝vue@cli報錯的簡單處理方式

    npm安裝vue@cli報錯的簡單處理方式

    最近工作中遇到了報錯,現(xiàn)在將解決的辦法分享給大家,下面這篇文章主要給大家介紹了關(guān)于npm安裝vue@cli報錯的簡單處理方式,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 深入探討Vue?3中的組合式函數(shù)編程方式

    深入探討Vue?3中的組合式函數(shù)編程方式

    Vue?3中引入了組合式函數(shù)編程方式,可以更好地實現(xiàn)代碼的復(fù)用和可維護性。通過定義可組合的函數(shù),可以將組件的邏輯和狀態(tài)進(jìn)行拆分和組合,實現(xiàn)更靈活的代碼組織方式。同時,組合式函數(shù)也支持響應(yīng)式數(shù)據(jù)和生命周期鉤子函數(shù),更加貼近Vue開發(fā)的實際場景
    2023-05-05
  • vue3動態(tài)路由addRoute實例詳解

    vue3動態(tài)路由addRoute實例詳解

    這篇文章主要介紹了vue3動態(tài)路由addRoute的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • vue 如何獲取視頻第一幀

    vue 如何獲取視頻第一幀

    這篇文章主要介紹了vue 如何獲取視頻第一幀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue2.0多條件搜索組件使用詳解

    vue2.0多條件搜索組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue2.0多條件搜索組件的實現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論

佛坪县| 定兴县| 古蔺县| 大同市| 府谷县| 阳信县| 东乡县| 龙口市| 望城县| 玉环县| 莫力| 莱芜市| 江西省| 斗六市| 横峰县| 上高县| 肇东市| 招远市| 清苑县| 奎屯市| 商城县| 樟树市| 星座| 长岛县| 阿巴嘎旗| 休宁县| 凤城市| 墨竹工卡县| 广河县| 灵璧县| 兴义市| 碌曲县| 江安县| 诸城市| 南召县| 历史| 景宁| 五常市| 木里| 青河县| 富宁县|