欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

UEditor 自定義圖片視頻尺寸校驗功能的實現(xiàn)代碼

 更新時間:2020年10月20日 15:03:12   作者:明厲  
UEditor支持單圖、多圖以及視頻上傳,編輯器配置項支持文件格式、文件大小校驗,對于文件寬高尺寸校驗暫不支持。本文給大家介紹UEditor 自定義圖片視頻尺寸校驗功能的實現(xiàn)代碼,感興趣的朋友一起看看吧

ueditor是百度編輯器,官網(wǎng)地址:http://ueditor.baidu.com/website/

UEditor支持單圖、多圖以及視頻上傳,編輯器配置項支持文件格式、文件大小校驗,對于文件寬高尺寸校驗暫不支持。這里記錄一下自定義圖片、視頻尺寸校驗過程,內(nèi)容核心主要是擴(kuò)展校驗邏輯和增加自定義提示文本。

單圖上傳

單圖上傳的邏輯在ueditor.all.js中,由simpleUpload組件實現(xiàn),其內(nèi)部是通過監(jiān)聽file輸入框的變化,來進(jìn)行文件校驗和上傳。
下圖initUploadBtn為初始化簡單上傳按鈕方法,也是進(jìn)行相關(guān)校驗的地方。

initUploadBtn里默認(rèn)校驗代碼如下:

var form = btnIframeDoc.getElementById('edui_form_' + timestrap);
var input = btnIframeDoc.getElementById('edui_input_' + timestrap);
var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);
domUtils.on(input, 'change', function(){
 if(!input.value) return;
 // 省略部分代碼
 /* 判斷后端配置是否沒有加載成功 */
 if (!me.getOpt('imageActionName')) {
  errorHandler(me.getLang('autoupload.errorLoadConfig'));
  return;
 }
 // 判斷文件格式是否錯誤
 var filename = input.value,
  fileext = filename ? filename.substr(filename.lastIndexOf('.')):'';
 if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {
  showErrorLoader(me.getLang('simpleupload.exceedTypeError'));
  return;
 }  
 
 // 校驗通過,上傳文件
 domUtils.on(iframe, 'load', callback);
 form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params);
 form.submit();
});

可以看到這里有好幾處判斷邏輯,全部通過后才提交表單上傳文件。對于圖片視頻的尺寸校驗,同樣也可以加在這里,通過后才提交,以下為修改后的代碼:

var form = btnIframeDoc.getElementById('edui_form_' + timestrap);
var input = btnIframeDoc.getElementById('edui_input_' + timestrap);
var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);
domUtils.on(input, 'change', function(){
 if(!input.value) return;
 // 省略部分代碼
 /* 判斷后端配置是否沒有加載成功 */
 if (!me.getOpt('imageActionName')) {
  errorHandler(me.getLang('autoupload.errorLoadConfig'));
  return;
 }
 // 判斷文件格式是否錯誤
 var filename = input.value,
  fileext = filename ? filename.substr(filename.lastIndexOf('.')):'';
 if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {
  showErrorLoader(me.getLang('simpleupload.exceedTypeError'));
  return;
 }  
 //校驗文件尺寸寬度
 var files = this.files;
 var reader = new FileReader();
 reader.readAsDataURL(input.files[0]);
 reader.onload = function (theFile) {
  var image = new Image();
  image.src = theFile.target.result;
  image.onload = function () {
   if (this.width < 1080) {
    showErrorLoader('寬度小于1080');
    return;
   }   
   // 校驗通過,上傳文件
   domUtils.on(iframe, 'load', callback);
   form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params);
   form.submit();
   };
  };
});

代碼中的校驗參數(shù)1080,和提示文本規(guī)范作法是加在配置文件中,這里只起演示作用。

新增的尺寸校驗,是使用FileReader讀取上傳的文件獲得寬高,進(jìn)而能夠?qū)崿F(xiàn)相關(guān)尺寸或者比例判斷,校驗效果如下:

多圖上傳

多圖上傳主要涉及三個文件,image.htmlwebupload.jsimage.js。
webupload.js包含各種驗證,包括文件總大小是否超出、單文件是否超出、文件是否重復(fù)等等,這里也可以增加自定義驗證,它們會在Uploader初始化時被一并加載。

新增自定義圖片尺寸校驗方法如下:

 /**
   * @property {int} [fileSingleWidth=undefined]
   * @namespace options
   * @for Uploader
   * @description 驗證單個文件尺寸滿足要求, 不滿足則不允許加入隊列。
   */
  //======================
  api.addValidator('fileSingleWidth', function () {
   var uploader = this,
    opts = uploader.options,
    minWidth = 1080;

   uploader.on('beforeFileQueued', function (file) {
    let that = this;
    let type = file.type;
    window.URL = window.URL || window.webkitURL;

    var reader = new FileReader();
    reader.readAsDataURL(file.source.source);
    reader.onload = function (theFile) {
     var image = new Image();
     image.src = theFile.target.result;
     image.onload = function () {
      if (this.width < minWidth) {
       file.setStatus(WUFile.Status.INVALID, 'exceed_width');
       that.trigger('error', 'F_EXCEED_SIZE', file);
       that.removeFile(file);
       return false;
      }
     };
    }
   });
  });

校驗邏輯寫好后,需要在image.jsaddFile方法中增加提示文本。

校驗效果:

視頻上傳

視頻上傳同樣也包含三個文件,video.htmlwebupload.jsvideo.js,處理邏輯與多圖上傳一樣。我們可以在上面校驗圖片寬度的基礎(chǔ)上再擴(kuò)展支持校驗視頻分辨率是否小于720,代碼如下:

 /**
   * @property {int} [fileSingleWidth=undefined]
   * @namespace options
   * @for Uploader
   * @description 驗證單個文件尺寸滿足要求, 不滿足則不允許加入隊列。
   */
  //======================
  api.addValidator('fileSingleWidth', function () {
   var uploader = this,
    opts = uploader.options,
    minWidth = 1080;
   
   uploader.on('beforeFileQueued', function (file) {
    let that = this;
    let type = file.type;
    window.URL = window.URL || window.webkitURL;
    // 校驗視頻分辨率
    if (type.indexOf('video') > -1) {
     var video = document.createElement('video');
     video.preload = 'metadata';
     video.src = URL.createObjectURL(file.source.source);
     video.onloadedmetadata = () => {
      URL.revokeObjectURL(video.src);            
      if (video.videoHeight < 720) {
       file.setStatus(WUFile.Status.INVALID, 'exceed_height');
       that.trigger('error', 'F_EXCEED_SIZE', file);
       that.removeFile(file);
       return false;
      }
     }
    }else{
     //校驗圖片寬度
     var reader = new FileReader();
     reader.readAsDataURL(file.source.source);
     reader.onload = function (theFile) {
      var image = new Image();
      image.src = theFile.target.result;
      image.onload = function () {
       if (this.width < minWidth) {
        file.setStatus(WUFile.Status.INVALID, 'exceed_width');
        that.trigger('error', 'F_EXCEED_SIZE', file);
        that.removeFile(file);
        return false;
       }
      };
     }
    }
   });
  });

vedio.jsaddFile方法中增加校驗文本

校驗效果:

到此這篇關(guān)于UEditor 自定義圖片視頻尺寸校驗功能的實現(xiàn)代碼的文章就介紹到這了,更多相關(guān)UEditor自定義圖片視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論