javascript 文件头判断文件类型

最近遇到一个需求,要在手机端选择音频文件,前端要验证这是一个音频文件才可以。本来想的是在input上加上accept="audio/*"这个就算结束了,结果基于app内部环境或者其它原因,未生效;想用文件名判断,结果手机端的不同入口,有的时候返回的不包含后缀,有的时候返回值是一个id或者其它的形式(荣耀sounds目录)。发现排除了所有的想法之后,只剩下读取文件头的方法。

最终实现结果,选择文件后,先检查文件类型,是audio直接过,不是audio则false,如果是不明文件,读取文件前16个字符之后,只支持以下我已经验证的文件头,不排除某些格式的文件头有漏掉的情况,我尽力了。附上我参考的文件头的来源地址

下方代码可能写的不太高端,但是能通了,酌情修改。