现在我正在尝试编写一个脚本,它只接受某些音频文件上传到服务器。
但是,某些MIME类型被返回为空。
下面是一些代码片段:
PHP:
$allowedExt=array('audio/mp4a-latm');
if(isset($_POST))
{
print_r($_FILES);
//ToDo: Limit by File Size
if(in_array($_FILES["fileUpload"]["type"],$allowedExt)){
echo "file type found";
}
else
echo "wrong file type";
}
HTML:
<form action="php/FileUpload.php" method="POST" enctype="multipart/form-data">
Choose a file: <input name="fileUpload" type="file" /><br />
<input type="submit" value="Upload" />
</form>
上述结果是:
Array ([fileUpload] => Array ([name] => 02 Helix Nebula.m4a [type] => [tmp_name] => <removed for space...>))
wrong file type
从我的理解,类型应该返回文件的MIME类型。在这种情况下,用于.m4a文件的'audio/mp4a-latm'。
如果php正确返回null为.m4a文件,那么确保我实际处理音频文件的最佳方法是什么?有什么比解析文件扩展名更明确吗? (确保有人没有改变说文本文档的扩展名)
我不知道为什么它不会在你的情况下返回正确的文件类型(可能缺少一些简单的东西 - 它应该),但如果。m4a的mime类型被定义为服务器上的音频(通常你甚至可以在共享主机环境中自己定义这个),那么通过扩展进行检查并没有太大的危险。不过,我同意实际解决问题会更好。 – Ynhockey 2012-03-11 09:28:47