【问题标题】:PHP upload script not working in Firefox but in ChromePHP 上传脚本在 Firefox 中不起作用,但在 Chrome 中不起作用
【发布时间】:2012-10-19 18:39:45
【问题描述】:

我正在尝试使用这个 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 中不起作用的问题是什么?

【问题讨论】:

标签: php firefox google-chrome file-upload


【解决方案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
}

【讨论】:

  • 它现在给出错误......并且不再在 Chrome 上工作......警告:preg_replace() [function.preg-replace]:未知修饰符
  • 现在出现错误...并且不再在 Chrome 上运行。警告:preg_replace() [function.preg-replace]:未知修饰符
【解决方案2】:

无论使用何种浏览器,PHP 的工作原理都是一样的。

您需要查看您的 HTML 代码。

这就是问题所在。

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2012-05-27
    相关资源
    最近更新 更多