elementUI 圖片上傳判斷長寬是否符合標(biāo)準(zhǔn)

需求:elementUI 框架上傳圖片诉濒,要判斷 圖片是否是 500*500 的尺寸

相關(guān)代碼:

html:

          <el-form-item label="模板封面"
                        class="upload-img">
            <el-upload class="el-upload-container avatar"
                       drag
                       action=""
                       element-loading-text="上傳中..."
                       :disabled="uploadLoadingAvatar"
                       accept="gif,jpg,jpeg,png"
                       :before-upload="handleBeforeUpload"
                       :http-request="handleUploadAvtar"
                       v-loading="uploadLoadingAvatar"
                       :show-file-list="false">
              <div class="el-upload-area">
                <img v-if="urls"
                     :src="urls"
                     style="width:200px;height:200px;">
                <div v-show="!urls">
                  <i class="el-icon-upload"></i>
                  <p class="el-upload__text"><em>點(diǎn)擊上傳</em></p>
                </div>
              </div>
              <p class="el-upload__tip"
                 slot="tip">500*500px,jpg/jepg/gif/png格式支持及志,20M以內(nèi)(點(diǎn)擊上圖上傳)</p>
            </el-upload>
          </el-form-item>

js:

      // 上傳封面圖之前
      handleBeforeUpload() {
        if (!this.uploadStatus) {
          this.$message.error('請等待其它視頻或圖片上傳完成')
        }
      },
      // 上傳封面圖
      handleUploadAvtar({ file }) {
        if (!this.uploadStatus) {
          this.urls = ''
          return
        }
        if (file.size > 20 * 1024 * 1024) {
          this.$message.error('圖片大小不能超過20M')
          return
        }
        // eslint-disable-next-line no-new
        new this.$upload({
          fileData: file,
          fileExt: ['gif', 'png', 'jpg', 'jpeg'],
          onUploadBefore: () => {
            this.uploadLoadingAvatar = true
            this.uploadStatus = false
          },
          onSuccess: ({ url }) => {
            const img = new Image()
            img.src = url
            // 需要賦值定義一下 this 值划纽,不然后面使用會有問題
            const that = this
            // 如果圖片被緩存锌畸,則直接返回緩存數(shù)據(jù)
            if (img.complete) {
              if (img.width !== 500 || img.height !== 500) {
                that.$message.error('請上傳500*500px的圖片')
                that.uploadLoadingAvatar = false
                that.uploadStatus = true
              } else {
                // 賦值顯示相關(guān)圖片
                that.urls = url
              }
            } else {
              // 完全加載完畢的事件
              img.onload = function() {
                if (img.width !== 500 || img.height !== 500) {
                  that.$message.error('請上傳500*500px的圖片')
                  that.uploadLoadingAvatar = false
                  that.uploadStatus = true
                } else {
                  that.urls = url
                }
              }
            }
          },
          onComplete: () => {
            this.uploadLoadingAvatar = false
            this.uploadStatus = true
          },
          onTaskError: () => {
          }
        })
      }

其中主要是 onSuccess 這段

            const img = new Image()
            img.src = url
            // 需要賦值定義一下 this 值潭枣,不然后面使用會有問題
            const that = this
            // 如果圖片被緩存盆犁,則直接返回緩存數(shù)據(jù)
            if (img.complete) {
              if (img.width !== 500 || img.height !== 500) {
                that.$message.error('請上傳500*500px的圖片')
                that.uploadLoadingAvatar = false
                that.uploadStatus = true
              } else {
                // 賦值顯示相關(guān)圖片
                that.urls = url
              }
            } else {
              // 完全加載完畢的事件
              img.onload = function() {
                if (img.width !== 500 || img.height !== 500) {
                  that.$message.error('請上傳500*500px的圖片')
                  that.uploadLoadingAvatar = false
                  that.uploadStatus = true
                } else {
                  that.urls = url
                }
              }
            }

要是有緩存數(shù)據(jù),就直接是 img.complete 的情況醋奠,要是 沒有,就要重新加載窜司,為 img.onload 的情況,在 之前 要進(jìn)行const that = this的 賦值塞祈,不然后面使用會 模糊this 的指向報錯。

相關(guān)參考資料鏈接:https://www.jb51.net/article/149891.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斯议,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轧葛,老刑警劉巖艇搀,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焰雕,死亡現(xiàn)場離奇詭異芳杏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)爵赵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門吝秕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人空幻,你說我怎么就攤上這事烁峭★躅酰” “怎么了约郁?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長但两。 經(jīng)常有香客問我鬓梅,道長,這世上最難降的妖魔是什么谨湘? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任绽快,我火速辦了婚禮芥丧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坊罢。我一直安慰自己续担,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布艘绍。 她就那樣靜靜地躺著赤拒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诱鞠。 梳的紋絲不亂的頭發(fā)上挎挖,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音航夺,去河邊找鬼蕉朵。 笑死,一個胖子當(dāng)著我的面吹牛阳掐,可吹牛的內(nèi)容都是我干的始衅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缭保,長吁一口氣:“原來是場噩夢啊……” “哼汛闸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艺骂,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤诸老,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钳恕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體别伏,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年忧额,在試婚紗的時候發(fā)現(xiàn)自己被綠了厘肮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡睦番,死狀恐怖类茂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抡砂,我是刑警寧澤大咱,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站注益,受9級特大地震影響碴巾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丑搔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一厦瓢、第九天 我趴在偏房一處隱蔽的房頂上張望提揍。 院中可真熱鬧,春花似錦煮仇、人聲如沸劳跃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刨仑。三九已至,卻和暖如春夹姥,著一層夾襖步出監(jiān)牢的瞬間杉武,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工辙售, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轻抱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓旦部,卻偏偏與公主長得像祈搜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子士八,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容