我一开始很困惑为什么我的文件没有为一些用户上传,我发现每个人都没有使用chrome,这是我正在测试的浏览器.
基本上我正在进行文件检查以确保它们只能上传mp3.
这适用于chrome,但不适用于firefox.
if ($_FILES['uploaded']['type']=="audio/mp3")
Run Code Online (Sandbox Code Playgroud)
这适用于firefox,但不适用于chrome.
$_FILES['uploaded']['type']=="audio/mpeg"
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样吗?我认为两种浏览器都能够理解或者......有没有其他浏览器我可能需要担心这些敏感的mime类型?
编辑:如果Pekka建议的是真的,检查某种哑剧类型的最佳方法是什么?
根据w3schools,audio/mpeg是正确的类型.但无关紧要,MIME类型可能会有所不同,在检查文件时绝对不能依赖它们.不一致是规则,也是可以预期的.
要识别MP3文件,getid3包可以帮助您:
getID3()是一个PHP脚本,可从MP3和其他多媒体文件格式中提取有用信息.
编辑: IANA 在此处有一个正式的MIME类型列表.在那里没有提到mp3,所以这是Chrome的一部分.
编辑2:在服务器端最好的选择是确定文件的MIME类型是finfo扩展名.它试图通过"内容嗅探"来确定文件的类型,在数据的前几个字节中查找某些文件类型的特定特征.在此过程中,MIME类型也可能不同,但至少它们在同一台服务器上是一致的,因此您不再需要浏览器问题.