mp3上传mime类型被firefox特别错过了

时间:2012-02-26 02:18:40

标签: php html firefox upload mp3

我有一个文件上传,它除了firefox之外的所有东西都很好用,它一直说不支持mimetype。这是我的代码:

 if(isset($_POST[submitfile]))
 {
     $uploadedsong = $_FILES['soup']['tmp_name'];
           $mimetype = $_FILES['soup']['type'];
                 if($mimetype=="audio/mpeg"||$mimetype=="audio/x-mpeg-3"||$mimetype=="audio/mp3"||$mimetype=="audio/x-mpeg"||$mimetype=="audio/x-mp3"||$mimetype=="audio/mpeg3"||$mimetype=="audio/x-mpeg3"||$mimetype=="audio/mpg"||$mimetype=="audio/x-mpg"||$mimetype=="audio/x-mpegaudio")
                 {

这允许每个浏览器上传,除了Firefox!非常令人沮丧,我不知道为什么会这样。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

文件上传的mime类型是完全信息性的,并没有进一步明确(和特别)绑定什么。不要依赖它。

Firefox在这里没有做错,这是你编写到脚本中的错误期望 - 来自PHP Manual­Docs

  

$_FILES['userfile']['type']

     

文件的mime类型,如果浏览器提供此信息。一个例子是“image / gif”。但是,在PHP方面没有检查这个mime类型,因此不会将其值视为理所当然。

所以这些信息的使用是有限的,并不严格。

您应该记录上传的mime类型,因为您无法测试所有浏览器/操作系统组合。

如果要确保文件遵循mp3文件的约定,也必须检查文件。在fileinfo­Docs(适用于所有文件)旁边,有php-readerZend_Mimme_Magic以及许多其他相关库的mp3文件。

答案 1 :(得分:1)

尝试使用此方法获取mime类型

$file_info = new finfo(FILEINFO_MIME); $mime_type = $file_info->file($file);