PHP上传脚本无法在Firefox中运行,但在Chrome中运行

时间:2012-10-19 18:39:45

标签: php firefox google-chrome file-upload

我正在尝试使用此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中无效?

2 个答案:

答案 0 :(得分:1)

这是因为文件类型具有音频/类型名称,并且您只将其与类型匹配。

尝试使用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
}

答案 1 :(得分:0)

无论浏览器如何,PHP的工作方式都相同。

您需要查看HTML代码。

这就是问题所在。