如何在提交到服务器之前在 Fine Uploader 中获取图像的尺寸并验证它?

How to get dimensions of the image in Fine Uploader before submitted to server and validate it?

我正在使用 Fine Uploader.

的 5.11.10 版本

我知道 Fine Uploader 中有一个 validation 功能,它允许设置 max/min width/height 要上传的图像。但这对我来说还不够。因为我想设置一个精确的宽度和高度值对的预定义列表,这样如果图像的尺寸与这些预定义的宽度和高度对之一匹配,那么图像将通过验证。

我检查了 onValidateonSubmit 回调。 None 其中提供了有关尺寸的任何信息。 onSubmit 接收图像的id,可以使用getFile 方法获取文件。但是 getFile 也没有给出尺寸。

那么,有什么建议吗?

搜索了一段时间后回答我自己的问题。

我借鉴了 Fine Uploader source code 的逻辑,其中确定了图像的尺寸。关键点是 return onSubmit 处理程序中的承诺。

注意: my_custom_validation 是本答案范围之外的自定义方法。您应该有自己的实现来满足您的需要。

onSubmit: function(id, name){
    var promise = new qq.Promise();
    var file = this.getFile(id);
    var image = new Image();

    var url = window.URL && window.URL.createObjectURL ? window.URL :
      window.webkitURL && window.webkitURL.createObjectURL ? window.webkitURL :
      null;

    image.onload = function(){
        if(my_custom_validation(this.width, this.height)){
            promise.success();    
        } else {
            promise.failure();
        }

    };

    image.src = url.createObjectURL(file);

    return promise;
}