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

elementUI使用el-upload上傳文件寫法及避坑總結(jié)(上傳圖片/視頻到本地/服務(wù)器及回顯+刪除)

 更新時(shí)間:2023年03月08日 11:43:27   作者:coderYYY  
upload上傳是前端開發(fā)很常用的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于elementUI使用el-upload上傳文件寫法及避坑的相關(guān)資料,包括上傳圖片/視頻到本地/服務(wù)器及回顯+刪除,需要的朋友可以參考下

Element Upload 上傳

Element Upload官方文檔:el-upload

具體細(xì)節(jié)只看官方文檔,本篇主要介紹避坑點(diǎn)和用法總結(jié)

注意點(diǎn)以及坑

本地上傳想要回顯圖片視頻,使用on-success是沒辦法再在上傳后獲取到本地文件路徑后進(jìn)行回顯的,因?yàn)橹挥性谏蟼鞯?code>action成功,即不報(bào)錯(cuò)的情況下才會(huì)調(diào)用,本地上傳用的action="#這個(gè)接口不存在,所以也不會(huì)上傳成功,更不會(huì)調(diào)用獲取到文件參數(shù)進(jìn)行回顯

如果想要先在本地進(jìn)行回顯,然后再上傳的話,需要使用on-change鉤子(還需:auto-upload ="false")獲取文件本地路徑,再生成一個(gè)formData傳給后端上傳文件的接口,

本地回顯用on-change,上傳到服務(wù)器的回顯用on-success

官方文檔中提供的上傳圖片接口https://jsonplaceholder.typicode.com/posts/現(xiàn)已無法使用

下面給大家總結(jié)幾種常用的上傳文件方法

el-upload上傳文件用法總結(jié)

1. 上傳單張圖片到服務(wù)器并進(jìn)行回顯,不可刪除只能替換

這種上傳單張圖片的運(yùn)行場(chǎng)景一般是上傳頭像,沒有刪除功能,只能進(jìn)行替換

<el-upload
  class="avatar-uploader"
  action="后端上傳接口"
  :show-file-list="false"
  :on-success="handleAvatarSuccess"
  :before-upload="beforeAvatarUpload">
  <img v-if="imageUrl" :src="imageUrl" class="avatar">
  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>

<style>
 /deep/ .avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
  }
  .avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }
  .avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
  }
  .avatar {
    width: 178px;
    height: 178px;
    display: block;
  }
</style>

<script>
  export default {
    data() {
      return {
        imageUrl: ''
      };
    },
    methods: {
      // 上傳成功后的回顯
      handleAvatarSuccess(res, file) {
        this.imageUrl = URL.createObjectURL(file.raw);
      },
      // 上傳前對(duì)類型大小的驗(yàn)證
      beforeAvatarUpload(file) {
        const isJPG = file.type === 'image/jpeg';
        const isLt2M = file.size / 1024 / 1024 < 2;

        if (!isJPG) {
          this.$message.error('上傳頭像圖片只能是 JPG 格式!');
        }
        if (!isLt2M) {
          this.$message.error('上傳頭像圖片大小不能超過 2MB!');
        }
        return isJPG && isLt2M;
      }
    }
  }
</script>

2. 拖拽上傳單張圖片到本地回顯再上傳到服務(wù)器,可刪除

可以手動(dòng)上傳,也可以拖拽上傳,圖片可以在沒有后端上傳接口時(shí)進(jìn)行回顯,可刪除
template:

<el-upload
          drag
          action="#"
          :show-file-list="false"
          :auto-upload="false"
          :on-change="uploadFile"
          accept="image/jpg,image/jpeg,image/png"
        >
          <i
            v-if="imageUrl1"
            class="el-icon-circle-close deleteImg"
            @click.stop="handleRemove1"
          ></i>
          <img v-if="imageUrl1" :src="imageUrl1" class="avatar" />

          <div v-else>
            <i
              class="el-icon-picture"
              style="margin-top: 40px; font-size: 40px; color: #999a9c"
            ></i>
            <div class="el-upload__text1">上傳圖片</div>
            <div class="el-upload__text">* 建議尺寸比例2.2:1,不超過4m,</div>
            <div class="el-upload__text">格式為png、jpeg或jpg</div>
          </div>
        </el-upload>
<style scoped>
.deleteImg {
  font-size: 30px;
  position: absolute;
  top: 0;
  right: 0;
  z-index: 999;
}
</style>

data:

 data() {
      return {
        imageUrl1: ''
      };
    },

method:

 uploadFile(item) {
      console.log(item);

      let formData = new FormData();
      let file = item.raw;
      this.imageUrl1 = URL.createObjectURL(file);
      formData.append("file", file);
      // 傳formData給后臺(tái)就行
      // 比如
      // 接口(formData).then(res=>{
          // this.videoUrl=res.url
      // })
    },
    // 刪除只需清空imageUrl1即可
   handleRemove1(file, fileList) {
      // console.log(file, fileList);
      this.imageUrl1 = "";
    },

3. 多圖上傳到服務(wù)器,可回顯預(yù)覽刪除

list-type="picture-card"hover會(huì)自動(dòng)有預(yù)覽刪除菜單,不需自己寫樣式,綁定事件即可

<el-upload
  action="后端接口地址"
  list-type="picture-card"
  :on-preview="handlePictureCardPreview"
  :on-remove="handleRemove">
  <i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
  <img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<script>
  export default {
    data() {
      return {
        dialogImageUrl: '',
        dialogVisible: false
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePictureCardPreview(file) {
        this.dialogImageUrl = file.url;
        this.dialogVisible = true;
      }
    }
  }
</script>

總結(jié)

到此這篇關(guān)于elementUI使用el-upload上傳文件寫法及避坑總結(jié)的文章就介紹到這了,更多相關(guān)elementUI使用el-upload上傳文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue前端實(shí)現(xiàn)驗(yàn)證碼登錄功能

    vue前端實(shí)現(xiàn)驗(yàn)證碼登錄功能

    這篇文章主要介紹了vue前端實(shí)現(xiàn)驗(yàn)證碼登錄功能,登錄時(shí)圖形驗(yàn)證通過三種方法結(jié)合實(shí)例代碼給大家講解的非常詳細(xì), 通過實(shí)例代碼介紹了vue登錄時(shí)圖形驗(yàn)證碼功能的實(shí)現(xiàn),感興趣的朋友一起看看吧
    2023-12-12
  • vue中this.$set()的基本用法實(shí)例

    vue中this.$set()的基本用法實(shí)例

    最近工作上經(jīng)常操作數(shù)組數(shù)據(jù),并且要求實(shí)時(shí)更新視圖數(shù)據(jù),這個(gè)時(shí)候首先想到的是?vue.set(),下面這篇文章主要給大家介紹了關(guān)于vue中this.$set()的基本用法實(shí)例,需要的朋友可以參考下
    2023-01-01
  • element中el-table中的el-input校驗(yàn)的實(shí)現(xiàn)

    element中el-table中的el-input校驗(yàn)的實(shí)現(xiàn)

    本文主要介紹了element中el-table中的el-input校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 結(jié)合el-upload組件實(shí)現(xiàn)大文件分片上傳功能

    結(jié)合el-upload組件實(shí)現(xiàn)大文件分片上傳功能

    Element UI的el-upload上傳組件相信各位小伙伴都已經(jīng)非常熟悉,最近接了一個(gè)新需求,要求在el-upload組件基礎(chǔ)上實(shí)現(xiàn)分片上傳功能,即小于等于5M文件正常上傳,大于5M文件切成5M每片上傳,那么這個(gè)功能怎么實(shí)現(xiàn)呢?一起看看吧
    2022-09-09
  • vue中map()快速使用方法小結(jié)

    vue中map()快速使用方法小結(jié)

    map()函數(shù)是在JS的數(shù)組中定義的,它返回一個(gè)新的數(shù)組,下面這篇文章主要給大家介紹了關(guān)于vue中map()快速使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Vue中使用Element的Table組件實(shí)現(xiàn)嵌套表格

    Vue中使用Element的Table組件實(shí)現(xiàn)嵌套表格

    本文主要介紹了Vue中使用Element的Table組件實(shí)現(xiàn)嵌套表格,通過type="expand"設(shè)置了一個(gè)展開按鈕,點(diǎn)擊該按鈕會(huì)顯示與當(dāng)前行關(guān)聯(lián)的子表格內(nèi)容,感興趣的可以了解一下
    2024-01-01
  • vue如何解決axios請(qǐng)求前端跨域問題

    vue如何解決axios請(qǐng)求前端跨域問題

    vue項(xiàng)目中,前端使用axios與后臺(tái)進(jìn)行數(shù)據(jù)請(qǐng)求或者提交的時(shí)候,如果后臺(tái)沒有設(shè)置跨域,瀏覽器做數(shù)據(jù)請(qǐng)求的時(shí)候就會(huì)報(bào)錯(cuò),這篇文章主要給大家介紹了關(guān)于vue如何解決axios請(qǐng)求前端跨域問題的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 在vue中,v-for的索引index在html中的使用方法

    在vue中,v-for的索引index在html中的使用方法

    下面小編就為大家分享一篇在vue中,v-for的索引index在html中的使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 淺談vue中resetFields()使用注意事項(xiàng)

    淺談vue中resetFields()使用注意事項(xiàng)

    這篇文章主要介紹了淺談vue中resetFields()使用注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 詳解vue-router 2.0 常用基礎(chǔ)知識(shí)點(diǎn)之router-link

    詳解vue-router 2.0 常用基礎(chǔ)知識(shí)點(diǎn)之router-link

    這篇文章主要介紹了詳解vue-router 2.0 常用基礎(chǔ)知識(shí)點(diǎn)之router-link,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論

广汉市| 荔浦县| 康乐县| 永安市| 博湖县| 古田县| 绥德县| 锡林浩特市| 沭阳县| 勐海县| 襄城县| 温州市| 神木县| 沛县| 泗洪县| 大渡口区| 梓潼县| 延寿县| 汽车| 道孚县| 兴安盟| 潢川县| 巴林左旗| 武汉市| 依安县| 罗定市| 林西县| 黄陵县| 江门市| 太仆寺旗| 巴青县| 青浦区| 丹棱县| 马山县| 甘洛县| 平利县| 瑞丽市| 昭平县| 三江| 连江县| 云阳县|