如何在提交到服务器之前在 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 要上传的图像。但这对我来说还不够。因为我想设置一个精确的宽度和高度值对的预定义列表,这样如果图像的尺寸与这些预定义的宽度和高度对之一匹配,那么图像将通过验证。
我检查了 onValidate
和 onSubmit
回调。 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;
}
我正在使用 Fine Uploader.
的 5.11.10 版本我知道 Fine Uploader 中有一个 validation 功能,它允许设置 max/min width/height 要上传的图像。但这对我来说还不够。因为我想设置一个精确的宽度和高度值对的预定义列表,这样如果图像的尺寸与这些预定义的宽度和高度对之一匹配,那么图像将通过验证。
我检查了 onValidate
和 onSubmit
回调。 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;
}