中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UEditor實現自定義圖片視頻尺寸校驗功能

發布時間:2020-10-26 17:59:07 來源:億速云 閱讀:219 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關UEditor實現自定義圖片視頻尺寸校驗功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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

單圖上傳

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

UEditor實現自定義圖片視頻尺寸校驗功能

initUploadBtn里默認校驗代碼如下:

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('&#63;') == -1 &#63; '&#63;' : '&') + params);
   form.submit();
   };
  };
});

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

新增的尺寸校驗,是使用FileReader讀取上傳的文件獲得寬高,進而能夠實現相關尺寸或者比例判斷,校驗效果如下:

UEditor實現自定義圖片視頻尺寸校驗功能

多圖上傳

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

UEditor實現自定義圖片視頻尺寸校驗功能

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

 /**
   * @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方法中增加提示文本。

UEditor實現自定義圖片視頻尺寸校驗功能

校驗效果:

UEditor實現自定義圖片視頻尺寸校驗功能

視頻上傳

視頻上傳同樣也包含三個文件,video.htmlwebupload.jsvideo.js,處理邏輯與多圖上傳一樣。我們可以在上面校驗圖片寬度的基礎上再擴展支持校驗視頻分辨率是否小于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方法中增加校驗文本

UEditor實現自定義圖片視頻尺寸校驗功能

校驗效果:

UEditor實現自定義圖片視頻尺寸校驗功能

以上就是UEditor實現自定義圖片視頻尺寸校驗功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涟水县| 琼中| 奉节县| 玉林市| 宣武区| 湾仔区| 高台县| 九龙县| 高淳县| 仁寿县| 舞阳县| 温宿县| 邵阳县| 祥云县| 泰来县| 沙洋县| 安西县| 蒲城县| 沧源| 年辖:市辖区| 益阳市| 邵东县| 汉阴县| 丰台区| 江孜县| 桦川县| 乌拉特后旗| 当阳市| 卢湾区| 四子王旗| 白水县| 阳城县| 云林县| 太原市| 丽江市| 修武县| 普兰店市| 康保县| 文山县| 将乐县| 柞水县|