现在有一个这样的需求,就是没办法判断.mp3格式或者wav格式的音频到底能不能播放,因为有些人喜欢骚操作,比如用pdf文件转化成mp3给我传上来,还播放不了,有大佬晓得这个问题怎么弄吗?!
现在有一个这样的需求,就是没办法判断.mp3格式或者wav格式的音频到底能不能播放,因为有些人喜欢骚操作,比如用pdf文件转化成mp3给我传上来,还播放不了,有大佬晓得这个问题怎么弄吗?!
document.querySelector('input[type="file"]').onchange = function(e){
var file=this.files[0];
const urlObj = URL.createObjectURL(file);
const aud=new Audio(urlObj)
aud.onerror= (e) => {
console.log(aud.error);
//有错误的就是不能播放的
}
}
1、根据文件头信息判断文件格式:每种音频文件格式通常都有其特定的文件头信息,可以根据文件头信息来判断文件格式。需要注意的是,文件头信息可能会被修改,因此这种方法并不完全可靠。
2、可以考虑使用第三方音频文件检测API,如Filestack、CloudConvert等。这些API可以将音频文件上传到云端进行检测,并返回音频文件的格式和元数据。
3、最好还是后端来做检测,后端可以通过FFmpeg库来检测音频文件的格式,以及将音频文件转换为支持的格式,还有一些专门用于解析音频文件的库,如getID3和PHP Audio File
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.8k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
3 回答10.3k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.8k 阅读
你验证下mime type不就完了?虽然不是绝对准确,但基本上已经能阻挡绝大多数恶意文件了,扩展名+mime type双向验证不就哦了?
mediainfo对于这个需求有点杀鸡焉用宰牛刀的意味了,只是验证下mime type这种简单的需求不需要引入第三方依赖。
一个典型的参考范例可以参见 https://stackoverflow.com/que...
上传前验证文件的mime type,跟你的需求是完全一致的
常见的扩展名和mimetype对照表可以参见: https://developer.mozilla.org...