繁体   English   中英

PHP上传脚本在Firefox中不起作用,但在Chrome中起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM