文件上传前如何校验文件类型和大小?
我用 input type=”file” 做上传,想在用户选完文件后立刻校验类型和大小,但不确定怎么准确判断。比如只允许 jpg/png,且不超过 5MB。
我试过读取 file.type 和 file.size,但有些图片的 MIME 类型是 image/jpeg,有些却是 image/jpg,还有些甚至识别成 application/octet-stream,根本没法可靠判断。而且 file.size 是字节,要自己换算成 MB 吗?
有没有稳妥点的做法?比如结合文件扩展名和二进制头一起校验?现在代码是这样:
const file = e.target.files[0];
if (file.size > 5 * 1024 * 1024) {
alert('文件太大');
}
if (!['image/jpeg', 'image/png'].includes(file.type)) {
alert('格式不支持');
}
这代码先检查文件大小,再看MIME类型和扩展名,最后通过二进制头进一步验证文件类型。希望有用。