判断上传图片格式类型

判断图片的具体格式类型

日常开发中,对上传图片或文件的格式判断,来处理是否符合要求。
本例是利用FileReader的readAsArrayBuffer方法,来处理文件格式的。
无论是本地上传的文件或者是网络请求获取的文件,只要类型是Blob or File格式,都可以进行判断。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function getFileMimeType(file) {
const map = {
'FFD8FFE0': 'jpg',
'89504E47': 'png',
'47494638': 'gif',
"52494646": 'webp'
}
const reader = new FileReader();
reader.readAsArrayBuffer(file);
return new Promise((resolve, reject)=> {
reader.onload = (event)=> {
try {
let array = new Uint8Array(event.target.result);
array = array.slice(0, 4);
let arr = [...array]
let key = arr.map(item=> item.toString(16)
.toUpperCase()
.padStart(2, '0'))
.join('')
resolve(map[key])
} catch(e) {
reject(e);
}
};
});
}