ExamplePromise
by Qwerty_Wasd
HTML
<input type="file" id="file" />
JavaScript
function checkFileImage(file) {
let result = false;
switch (file.type) {
case "image/png":
case "image/gif":
case "image/bmp":
case "image/jpeg":
result = true;
break;
}
return result;
}
function formatBytes(bytes, decimals) {
if (bytes == 0) return '0 Bytes';
var k = 1024,
dm = decimals <= 0 ? 0 : decimals || 2,
sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
function imageSizeCheck(file,
sizeParams = {
widthMin: 0,
widthMax: 0,
heightMin: 0,
heightMax: 0,
prefixName: ''
},
sizeMaxBytes = 1000000 /*1000000 - 1mb*/) {
if (file == undefined) return {file: undefined};
return new Promise((resolve, reject) => {
let result = {
check: true,
errors: [],
file,
filePreviewUrl: ''
},
reader = new FileReader();
reader.onloadend = () => {
if (checkFileImage(file)) {
var img = new Image;
img.src = reader.result;
img.onload = function (e) {
if (sizeParams.hasOwnProperty('widthMax') && e.currentTarget.width > sizeParams.widthMax) {
result.errors.push(sizeParams.prefixName + 'Максимальная ширина изображения ' + sizeParams.widthMax + '\n');
}
if (sizeParams.hasOwnProperty('widthMin') && e.currentTarget.width < sizeParams.widthMin) {
result.errors.push(sizeParams.prefixName + 'Минимальная ширина изображения ' + sizeParams.widthMin + '\n');
}
if (sizeParams.hasOwnProperty('heightMax') && sizeParams.heightMax > 0 && e.currentTarget.height > sizeParams.heightMax) {
result.errors.push(sizeParams.prefixName + 'Максимальная высота изображения ' + sizeParams.heightMax + '\n');
}
if (sizeParams.hasOwnProperty('heightMin') &&...