【发布时间】:2021-09-27 14:35:53
【问题描述】:
用户有一个按钮,他可以在其中添加多个图像。现在,我需要检查每个图像的分辨率,如果所有的分辨率都在 800x600 以上,那么我需要上传图像,否则会报错。
这需要看起来像这样:
prepareFilesList(files) {
if (!this.verifyFilesResolution(files)) {
this.selectedFiles = files;
this.uploadFiles();
} else {
return this.toastr.error('Image must be at least 800x600 .');
}
}
verifyFilesResolution(files): boolean {
let err = false;
if (files && files.length > 0) {
for (let i = 0; i < files.length; i++) {
let img = new Image();
img.src = window.URL.createObjectURL(files[i]);
img.onload = function () {
if (img.width <= 800 || img.height <= 600) {
err = true;
}
};
}
}
return err;
}
但是,在这种情况下,它不起作用,因为它不等待.onload,并且在所有情况下都会引发错误。不知何故,我需要等待.onload 并循环遍历所有文件或至少一个分辨率不高于 800x600 的文件。
我该怎么做?谢谢。
【问题讨论】:
-
如果您不将图像附加到 DOM,我怀疑 onload 是否会触发?
标签: javascript angular typescript rxjs