in source/console/src/views/AddEditEvent.tsx [592:628]
async getFileType(file: File): Promise<string> {
return new Promise<string>((resolve, reject) => {
try {
const reader = new FileReader();
reader.onloadend = (evt) => {
try {
if (evt && evt.target && evt.target.readyState === FileReader.DONE) {
const bytes: string[] = [];
new Uint8Array(evt.target.result as ArrayBuffer).forEach((byte) => bytes.push(byte.toString(16)));
switch (bytes.join('').toUpperCase()) {
case 'FFD8FFDB':
case 'FFD8FFE0':
resolve('image/jpeg');
break;
case '47494638':
resolve('image/gif');
break;
case '89504E47':
resolve('image/png');
break;
default:
reject('Unsupported file type');
break;
}
}
} catch (err) {
reject(err);
}
};
reader.readAsArrayBuffer(file.slice(0, 4));
} catch (err) {
reject(err);
}
});
}