interface ValidFileSizeProps {
maxSize: number;
failCb?: () => void;
}
interface ValidSizeProps {
height: number;
width: number;
failCb?: () => void;
}
validFileSizeProps?: ValidFileSizeProps;
validSizeProps?: ValidSizeProps;
return new Promise((resolve, reject) => {
if (validFileSizeProps !== undefined) {
const { size } = file;
const { maxSize, failCb } = validFileSizeProps;
if (size > maxSize) {
console.log(`Exceeds the max size, current file size: ${size}, max size: ${maxSize}`);
failCb?.();
reject(file);
}
}
if (validSizeProps !== undefined) {
const { width, height } = validSizeProps;
const fileReader = new FileReader();
fileReader.readAsDataURL(file);
fileReader.onload = function (e: any) {
const src = e.target.result;
const image = new Image();
image.src = src;
image.onload = function () {
const { height: imageHeight, width: imageWidth } = image;
if (imageWidth !== width || imageHeight !== height) {
reject(file);
} else {
resolve(file);
}
};
};
} else {
resolve(file);
}
});