vue 檢測用戶上傳圖片寬高的方法
需求:
用戶可上傳3-6張圖片(第 1 2 3 張必須傳),上傳的圖片必須是540 * 330 像素。
第一步,獲取上傳的圖片的寬高。
初始化一個(gè)對象數(shù)組,寬高均設(shè)為0。
如果用戶上傳的圖片沒有上限,可以動(dòng)態(tài)修改這個(gè)對象數(shù)組。
data:
picArray:[
{
width:0,
height:0
},
{
width:0,
height:0
},
{
width:0,
height:0
},
{
width:0,
height:0
},
{
width:0,
height:0
},
{
width:0,
height:0
}
],
HTML:
<myupload :keys="index" @getBase="getUpImg">
</myupload>
myupload是上傳圖片的組件,略。
methods:
getUpImg(imgurl, keys){
if(keys === 9){
this.submitData.logo_img = imgurl
this.logoImgCount = true
} else {
Vue.set(this.imgListArray,keys,imgurl)
this.$nextTick(function(){
let img = document.getElementById('picId' + keys)
// console.log(img)
let picArray = this.picArray
img.onload = function () {
console.log(keys)
console.log(this.naturalWidth)
console.log(this.naturalHeight)
let o = {
width: this.naturalWidth,
height: this.naturalHeight
}
Vue.set(picArray,keys,o)
console.log('picArray', picArray)
}
})
}
},
關(guān)鍵的代碼用紅色標(biāo)出了。
值得注意的是:獲取寬高必須用 this.$nextTick ,里面再寫 img.onload 。this.naturalWidth 是圖片原本的寬高。此時(shí) this 指的是當(dāng)前圖片對象。
第二步,提交之前檢驗(yàn)圖片的寬高。
methods:
imageCheck(){
let checkboolean = true
let check = {
'width': [[540],[0,540]],
'height': [[330],[0,330]]
}
let f1 = function (num,index,type) {
let n = num
let i = index
let t = type
let b = false
// console.log(n,i,t)
for (let x = 0; x < check[type][i].length; x++) {
if (check[type][i][x] === num) {
// console.log('>>>>>>>>>>>>>' + check[type][i][x] + '===' + num + '>>>>>>>>>>>>>>>>' )
b = true
}
}
return b
}
for (let i = 0; i < this.picArray.length; i++) {
let cb = true
for (let x in this.picArray[i]) {
let number = this.picArray[i][x]
// console.log(x,number)
if (x === 'width' && i < 3) {
checkboolean = f1(number, 0, 'width')
if (!checkboolean) {
// console.log('=================',i,x,number,'return false')
cb = false
break
}
} else if (x === 'width' && i >= 3) {
checkboolean = f1(number, 1, 'width')
if (!checkboolean) {
// console.log('=================',i,x,number,'return false')
cb = false
break
}
} else if (x === 'height' && i < 3) {
checkboolean = f1(number, 0, 'height')
if (!checkboolean) {
// console.log('=================',i,x,number,'return false')
cb = false
break
}
} else if (x === 'height' && i >= 3) {
checkboolean = f1(number, 1, 'height')
if (!checkboolean) {
// console.log('=================',i,x,number,'return false')
cb = false
break
}
}
}
if (!cb) {
break
}
}
return checkboolean
},
// sumbit function
...
if(!this.imageCheck()){
this.$message({
message: this.MASSAGE_imagecheck,
type: 'error'
});
return false
}
alert('可以傳圖')
...
$message 是elementUI的組件。
imageCheck 就是檢驗(yàn)圖片寬高用的方法。返回布爾值,false表示圖片寬高不符合要求(或者沒有傳圖)。
其中:
checkboolean 是最終要返回的布爾值。
check 是裝載合法寬高值的對象。因?yàn)楹?張圖可傳可不傳,所以 width 和 height 都是二階數(shù)組。數(shù)字是符合要求的值。
f1 是檢驗(yàn)?zāi)骋粡垐D寬高的函數(shù),傳入寬高值、下標(biāo)(第幾張)、類型(width height),返回布爾值,false表示圖片寬高不符合要求(或者沒有傳圖)。
執(zhí)行 imageCheck 方法的時(shí)候會(huì)直接執(zhí)行循環(huán),如果發(fā)現(xiàn)圖片不符合要求就跳出并返回 false 給函數(shù)外。
里循環(huán)中的 x 代表類型,i 代表下標(biāo)。
使用:在提交時(shí)執(zhí)行 imageCheck 方法即可。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3父組件異步props傳值子組件接收不到值問題解決辦法
這篇文章主要給大家介紹了關(guān)于vue3父組件異步props傳值子組件接收不到值問題的解決辦法,需要的朋友可以參考下2024-01-01
vue使用vue-video-player插件播放視頻的步驟講解
在最近的項(xiàng)目中有一個(gè)視頻播放的功能,在之前的項(xiàng)目中沒有接觸過類似的功能,第一次接觸,把具體操作步驟一下,這篇文章主要給大家介紹了關(guān)于vue使用vue-video-player插件播放視頻的相關(guān)資料,需要的朋友可以參考下2022-12-12
Vue中以HTML形式顯示內(nèi)容并動(dòng)態(tài)生成HTML代碼的方法
有的時(shí)候我們想在vue中直接顯示一個(gè)html的網(wǎng)頁,如果用富文本方式,那么內(nèi)容就會(huì)太多,那么怎么處理呢?這篇文章主要給大家介紹了關(guān)于Vue中如何以HTML形式顯示內(nèi)容并動(dòng)態(tài)生成HTML代碼的相關(guān)資料,需要的朋友可以參考下2024-03-03
Vue3 composition API實(shí)現(xiàn)邏輯復(fù)用的方法
本文主要介紹了Vue3 composition API實(shí)現(xiàn)邏輯復(fù)用的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
element-plus dialog v-loading不生效問題及解決
這篇文章主要介紹了element-plus dialog v-loading不生效問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
ElementPlus el-message-box樣式錯(cuò)位問題及解決
這篇文章主要介紹了ElementPlus el-message-box樣式錯(cuò)位問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

