[英]PHP upload script not working in Firefox but in Chrome
我正在尝试使用此PHP脚本在上传时检查文件的扩展名。 问题是,它在Chrome中完美运行,但在Firefox中,即使扩展名正确,它也始终返回false,因此总是回显“无效文件”。
$allowedExts = array("mp3", "wma", "wav", "ogg", "aac", "aiff", "amr", "ra");
$arr = explode(".", $_FILES["file"]["name"]);
$extension = end($arr);
if ((($_FILES["file"]["type"] == "audio/mp3")
|| ($_FILES["file"]["type"] == "audio/wma")
|| ($_FILES["file"]["type"] == "audio/wav")
|| ($_FILES["file"]["type"] == "audio/ogg")
|| ($_FILES["file"]["type"] == "audio/aac")
|| ($_FILES["file"]["type"] == "audio/aiff")
|| ($_FILES["file"]["type"] == "audio/amr")
|| ($_FILES["file"]["type"] == "audio/ra"))
&& ($_FILES["file"]["size"] < 20000000)
&& in_array($extension, $allowedExts))
{
.
.
.
.
}
else
{
echo "Invalid file";
}
任何人都可以在if部分中说明在Firefox中无法使用的问题是什么?
这是因为文件类型具有音频/类型名称,并且您将其与该类型匹配。
尝试使用in_array函数并使用preg_replace删除音频/
$allowedExts = array("mp3", "wma", "wav", "ogg", "aac", "aiff", "amr", "ra");
$allowedSize = 20000000;
$currentType = preg_replace('/(.*)(/)/','',$_FILES['file']['type']);
$currentSize = $_FILES['file']['size'];
if( in_array($currentType,$allowedExts) && $currentSize < $allowedSize )
{
// DO UPLOAD
// REFER TO http://php.net/manual/en/function.move-uploaded-file.php
}
else
{
// ERROR UPLOADING FILE
}
不管浏览器如何,PHP的工作原理都相同。
您需要查看您的HTML代码。
这就是问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.