【发布时间】:2012-03-28 01:38:06
【问题描述】:
现在我正在尝试编写一个只接受某些音频文件上传到服务器的脚本。
但是,某些 MIME 类型被返回为 null。
这里是一些代码片段:
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
据我了解,type 应该返回文件的 MIME 类型。在这种情况下,'audio/mp4a-latm' 用于 .m4a 文件。
如果 php 正确地为 .m4a 文件返回 null,那么确保我实际处理音频文件的最佳方法是什么?除了解析文件扩展名之外,还有什么更明确的吗? (确保有人没有更改文本文档的扩展名)
【问题讨论】:
-
我不确定为什么它在您的情况下没有返回正确的文件类型(可能缺少一些简单的东西——它应该),但是如果 .m4a 的 mime 类型被定义为服务器上的音频(即使在共享主机环境中,您通常也可以自己定义),那么通过扩展进行检查并没有太大的危险。不过,我同意实际解决问题会更好。
标签: php file audio file-upload mime-types