JavaScript 上傳文件限制參數(shù)案例詳解
項(xià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ù),對數(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ù),對數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS獲取select的value和text值的簡單實(shí)例
本篇文章主要是對JS獲取select的value和text值的簡單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02JS尾遞歸的實(shí)現(xiàn)方法及代碼優(yōu)化技巧
這篇文章主要介紹了JS尾遞歸的實(shí)現(xiàn)方法及代碼優(yōu)化技巧,結(jié)合實(shí)例形式分析了尾遞歸的原理、JS實(shí)現(xiàn)方法及優(yōu)化技巧,需要的朋友可以參考下2019-01-01Iframe自適應(yīng)高度絕對好使的代碼 兼容IE,遨游,火狐
Iframe自適應(yīng)高度絕對好使的代碼IE,遨游,火狐都兼容,需要的朋友可以參考下。2011-01-01教學(xué)演示-UBB,剪貼板,textRange及其他
教學(xué)演示-UBB,剪貼板,textRange及其他...2006-07-07Vue2.0+ElementUI實(shí)現(xiàn)表格翻頁的實(shí)例
下面小編就為大家?guī)硪黄猇ue2.0+ElementUI實(shí)現(xiàn)表格翻頁的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10用JavaScript實(shí)現(xiàn)用一個(gè)DIV來包裝文本元素節(jié)點(diǎn)
當(dāng)我試圖將文本(可能也包含HTML元素)用一個(gè)DIV元素包起來時(shí),可以使用下面的方法,需要的朋友可以參考下2014-09-09