JavaScript 上傳文件限制參數(shù)案例詳解
項(xiàng)目場(chǎng)景:
1,上傳文件限制
功能作用:
1,防止前端操作上傳異常文件
2,限制符合的規(guī)則,優(yōu)化展示模型
功能實(shí)現(xiàn):
1,獲取file實(shí)例
2,執(zhí)行校驗(yàn)規(guī)則方法
代碼如下:
//大小限制
checkFileSize(file, rules) {
return new Promise((resolve, reject) => {
file.size / 1024 / 1024 > rules ? reject() : resolve()
}).then(
() => {
return true
},
() => {
//操作提示
return Promise.reject()
}
)
},
//上傳格式限制
checkFileType(file, rules) {
return new Promise((resolve, reject) => {
rules && rules.includes(file.type) ? resolve() : reject()
}).then(
() => {
return true
},
() => {
//操作提示
return Promise.reject()
}
)
},
//寬高比例(圖片)
checkImageWH(file, rules) {
const _this = this
return new Promise((resolve, reject) => {
//讀取文件
const filereader = new FileReader()
filereader.readAsDataURL(file)
filereader.onload = e => {
const src = e.target.result
const image = new Image()
image.onload = function() {
//分析數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行判斷 符合規(guī)則 resolve()
}
image.onerror = reject
image.src = src
}
}).then(
() => {
return true
},
() => {
//操作提示
return Promise.reject()
}
)
},
//寬高比例(視頻)
checkVideoWH(file, rules) {
return new Promise(function(resolve, reject) {
var url = URL.createObjectURL(file)
var video = document.createElement('video')
video.onloadedmetadata = evt => {
URL.revokeObjectURL(url)
//分析數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行判斷 符合規(guī)則 resolve()
}
video.src = url
video.load() // fetches metadata
}).then(
() => {
return true
},
() => {
//操作提示
return Promise.reject()
}
)
}
實(shí)際調(diào)用
//獲取file實(shí)例
Screen(){
//獲取權(quán)限規(guī)則
const { filesSize, filesFormat, fileLimit} = this // 文件大小、文件類型、圖片/視頻寬高限制
//傳參判斷
const isFileSize = filesSize ? await this.checkFileSize(file, filesSize) : true
const isFileType = filesFormat ? await this.checkFileType(file, filesFormat) : true
//圖片素材
if (fileLimit && fileLimit.type * 1 === 1) {
const isImageLimit = fileLimit? await this.checkImageWH(file, fileLimit) : true
//輸出結(jié)果
return isFileSize && isFileType && isImageLimit
} else if (fileLimit&& fileLimit.type * 1 === 2) {
//視頻素材
const isVideoLimit = fileLimit? await this.checkVideoWH(file, fileLimit) : true
//輸出結(jié)果
return isFileSize && isFileType && isVideoLimit
} else {
//不限制
//輸出結(jié)果
return isFileSize && isFileType
}
}
內(nèi)容總結(jié):
1,獲取實(shí)例
2,執(zhí)行方法。
到此這篇關(guān)于JavaScript 上傳文件限制參數(shù)案例詳解的文章就介紹到這了,更多相關(guān)js 上傳文件限制參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nuxt+axios實(shí)現(xiàn)打包后動(dòng)態(tài)修改請(qǐng)求地址的方法
這篇文章主要介紹了nuxt+axios實(shí)現(xiàn)打包后動(dòng)態(tài)修改請(qǐng)求地址的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
用Javascript評(píng)估用戶輸入密碼的強(qiáng)度(Knockout版)
早上看到博友6點(diǎn)多發(fā)的一篇關(guān)于密碼強(qiáng)度的文章(連接),甚是感動(dòng)(周末大早上還來發(fā)文)2011-11-11
javascript實(shí)現(xiàn)簡(jiǎn)單放大鏡效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)簡(jiǎn)單放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
JavaScript 動(dòng)態(tài)生成方法的例子
動(dòng)態(tài)生成方法的例子,這些方法在新對(duì)象實(shí)例化的時(shí)候創(chuàng)建2009-07-07
微信小程序?qū)崿F(xiàn)點(diǎn)擊圖片放大預(yù)覽
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)點(diǎn)擊圖片放大預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
微信小程序開發(fā)之實(shí)現(xiàn)食堂點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何通過微信小程序開發(fā)一個(gè)簡(jiǎn)單的食堂點(diǎn)餐系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以和小編一起學(xué)習(xí)一下2023-01-01
webpack 開發(fā)和生產(chǎn)并行設(shè)置的方法
這篇文章主要介紹了webpack 開發(fā)和生產(chǎn)并行設(shè)置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
JS實(shí)現(xiàn)數(shù)組按升序及降序排列的方法
這篇文章主要介紹了JS實(shí)現(xiàn)數(shù)組按升序及降序排列的方法,涉及javascript針對(duì)數(shù)組的簡(jiǎn)單排序操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04

