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

vue前端實現(xiàn)批量上傳圖片功能并回顯圖片

 更新時間:2025年10月24日 09:02:57   作者:涼柚ˇ  
這篇文章主要為大家詳細介紹了vue前端實現(xiàn)批量上傳圖片功能并回顯圖片的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

核心功能實現(xiàn)

在Vue組件的data函數(shù)中定義一個數(shù)組來存儲選中的文件,并在methods中添加一個方法來處理文件選擇事件。

methods: {
updateImgs(fieldname) {
      const inputFile = document.createElement('input')
      inputFile.type = 'file'
      inputFile.accept = 'image/*' // 只接受圖片文件
      inputFile.multiple = true // 允許選擇多個文件

      inputFile.click() // 觸發(fā)文件選擇對話框

      inputFile.onchange = async (e) => {
        const files = e.target.files // 獲取所有選中的文件
        if (!files.length) return // 如果沒有選中文件,直接返回

        // 遍歷每個文件
        for (let i = 0; i < files.length; i++) {
          const file = files[i]
          const fileSizeMB = file.size / (1024 * 1024) // 轉(zhuǎn)換為MB

          if (fileSizeMB > 2) {
            // 文件大小超過2MB,顯示提示信息
            this.$message.error(`文件 ${file.name} 大小不能超過2MB`)
            continue // 跳過當前文件,繼續(xù)檢查下一個文件
          }

          // 使用 FormData 來構(gòu)建上傳的數(shù)據(jù)
          const formData = new FormData()
          formData.append('file', file)

          try {
            const { data: res } = await uploadFile(formData) // 你的配置后的上傳圖片接口
             //根據(jù)接口返回存圖片的url 例this.xxx = res,之后應(yīng)用到你的新增/編輯接口
             this.reportData.projimplement.imglist.push({
                  url: res.data.filePath,
                  description: file.name
                })
          } catch (error) {}
        }
      }
    },
    getFullImageUrl(relativePath) {
      // 結(jié)合服務(wù)器前綴和相對路徑
      return `${this.serverPrefix}${relativePath}`
    },
    getPreviewList(imgList) {
    // 顯示圖片組
      return imgList.map((item) => this.getFullImageUrl(item.url))// 你的結(jié)構(gòu)
    }
  }

實現(xiàn)了以下功能:

0.創(chuàng)建文件輸入元素:使用document.createElement創(chuàng)建一個新的元素,類型設(shè)置為file,并且設(shè)置了accept屬性來限制用戶只能選擇圖片文件,同時設(shè)置了multiple屬性允許用戶選擇多個文件。

1.觸發(fā)文件選擇對話框:通過調(diào)用inputFile.click()方法,模擬用戶點擊文件輸入框,從而觸發(fā)操作系統(tǒng)的文件選擇對話框。

2.處理文件選擇:通過監(jiān)聽inputFile元素的onchange事件,當用戶選擇了文件后,事件處理函數(shù)會被觸發(fā)。

3.文件大小檢查:在事件處理函數(shù)中,首先獲取所有選中的文件,然后遍歷這些文件,檢查每個文件的大小是否超過2MB。如果文件大小超標,則顯示錯誤提示并跳過該文件。

4.構(gòu)建FormData:對于每個符合大小要求的文件,使用FormData對象來構(gòu)建一個表單數(shù)據(jù)對象,并將文件附加到這個對象中。

5.異步上傳文件:使用async/await語法,調(diào)用uploadFile函數(shù)(這個函數(shù)沒有在代碼中定義,可能是組件的另一個方法或者外部服務(wù))來異步上傳文件。uploadFile函數(shù)接收一個FormData對象作為參數(shù),并返回一個包含上傳結(jié)果的Promise。

6.處理上傳結(jié)果:如果上傳成功(res.success為true),則根據(jù)傳入的fieldname參數(shù),將文件路徑添加到組件的相應(yīng)數(shù)據(jù)屬性中。之后顯示成功消息。

7.錯誤處理:如果上傳過程中出現(xiàn)錯誤,catch塊會捕獲異常,但當前的實現(xiàn)中并沒有做任何錯誤處理,只是簡單地忽略了錯誤。

HTML部分

<div style="position: relative">
            <el-button class="upimg_but" type="primary" size="small" @click="updateImgs"
              >上傳</el-button
            >
            <div class="img-block">
              <div class="img-box" v-for="(item, index) in reportData.projimplement.imglist" :key="index">
                <el-tooltip effect="dark" :content="item.description" placement="bottom">
                  <el-image
                    style="width: 150px; height: 150px"
                    :src="getFullImageUrl(item.url)"
                    fit="contain"
                    lazy
                    :preview-src-list="getPreviewList(reportData.projimplement.imglist)"
                  ></el-image>
                </el-tooltip>
                <i class="el-icon-delete" style="cursor: pointer" @click="deleteImg(index)"></i>
              </div>
            </div>
          </div>

CSS部分

.img-block {
  padding-top: 30px;
  max-height: 320px;
  display: flex;
  flex-wrap: wrap;
  overflow-y: auto;

  &::-webkit-scrollbar-track-piece {
    background: #e4e4e4;
  }

  &::-webkit-scrollbar {
    width: 4px;
    height: 8px;
  }

  &::-webkit-scrollbar-thumb {
    background: #c2c2c2;
    border-radius: 20px;
  }

  .img-box {
    width: 33%;
    text-align: center;
    margin: 8px 0;
  }
}

效果預(yù)覽

ps:請注意,上述代碼只是一個示例,實際應(yīng)用中你可能需要根據(jù)具體需求調(diào)整樣式、上傳邏輯和錯誤處理等。此外,確保后端API能夠正確處理批量上傳的文件。

相關(guān)文章

  • ElementPlus 自定義封裝 el-date-picker 的快捷功能示例詳解

    ElementPlus 自定義封裝 el-date-picker 的快捷功能示例詳解

    文章討論了用戶對官網(wǎng)提供的案例不滿足快捷功能需求的情況,建議在外部自定義組件中導(dǎo)入并使用快捷內(nèi)容,以滿足用戶需求,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-12-12
  • Vue實現(xiàn)剪切板圖片壓縮功能

    Vue實現(xiàn)剪切板圖片壓縮功能

    這篇文章主要介紹了Vue實現(xiàn)剪切板圖片壓縮功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • vue中window.addEventListener(‘scroll‘,?xx)失效的解決

    vue中window.addEventListener(‘scroll‘,?xx)失效的解決

    這篇文章主要介紹了vue中window.addEventListener(‘scroll‘,?xx)失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue項目中如何排查沒有使用的變量、js、css和無關(guān)文件引用等

    vue項目中如何排查沒有使用的變量、js、css和無關(guān)文件引用等

    這篇文章主要介紹了vue項目中如何排查沒有使用的變量、js、css和無關(guān)文件引用等的相關(guān)資料,通過示例講解了ESLint配置、Webpack插件使用和手動檢查,以優(yōu)化代碼結(jié)構(gòu)和資源管理,需要的朋友可以參考下
    2025-06-06
  • 使用echarts柱狀圖實現(xiàn)select下拉刷新數(shù)據(jù)

    使用echarts柱狀圖實現(xiàn)select下拉刷新數(shù)據(jù)

    這篇文章主要介紹了使用echarts柱狀圖實現(xiàn)select下拉刷新數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue頁面跳轉(zhuǎn)動畫效果的實現(xiàn)方法

    Vue頁面跳轉(zhuǎn)動畫效果的實現(xiàn)方法

    百度了好久都沒辦法實現(xiàn)vue中一個頁面跳到另一個頁面,甚至到google上搜索也是沒辦法的,最終還是找了高人親自指導(dǎo),所以下面這篇文章主要給大家介紹了關(guān)于Vue頁面跳轉(zhuǎn)動畫效果的實現(xiàn)方法,需要的朋友可以參考下
    2018-09-09
  • 關(guān)于Vue的路由權(quán)限管理的示例代碼

    關(guān)于Vue的路由權(quán)限管理的示例代碼

    本篇文章主要介紹了關(guān)于Vue的路由權(quán)限管理的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Vue實現(xiàn)導(dǎo)出Excel表格文件提示“文件已損壞無法打開”的解決方法

    Vue實現(xiàn)導(dǎo)出Excel表格文件提示“文件已損壞無法打開”的解決方法

    xlsx用于讀取解析和寫入Excel文件的JavaScript庫,它提供了一系列的API處理Excel文件,使用該庫,可以將數(shù)據(jù)轉(zhuǎn)換Excel文件并下載到本地,適用于在前端直接生成Excel文件,這篇文章主要介紹了Vue實現(xiàn)導(dǎo)出Excel表格,提示文件已損壞,無法打開的解決方法,需要的朋友可以參考下
    2024-01-01
  • vue移動端城市三級聯(lián)動組件使用詳解

    vue移動端城市三級聯(lián)動組件使用詳解

    這篇文章主要為大家詳細介紹了vue移動端城市三級聯(lián)動組件的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • vue3中toRef、toRefs和toRaw的使用

    vue3中toRef、toRefs和toRaw的使用

    本文主要介紹了vue3中toRef、toRefs和toRaw的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評論

澳门| 南川市| 建湖县| 井陉县| 准格尔旗| 台南市| 恩施市| 绥中县| 蓝山县| 托克托县| 罗山县| 新竹市| 金秀| 仙居县| 临颍县| 明星| 丹东市| 海门市| 桂林市| 兴海县| 南郑县| 河曲县| 溧阳市| 铜陵市| 福鼎市| 四子王旗| 铁岭市| 子长县| 隆德县| 平山县| 沐川县| 澄城县| 白河县| 廊坊市| 台湾省| 日喀则市| 长武县| 西峡县| 丽水市| 罗平县| 株洲县|