1

我正在尝试创建一个表单,用户可以在其中将 xml 文件上传到我的服务器,该文件将覆盖已经存在的文件。我正在使用下面的代码(如果文件已经存在,我知道它不会上传文件,但是一旦我解决了这个问题,我会修复它)。

问题是第一个 if 语句在此语句中失败

($_FILES["file"]["type"] == "application/xml")

这意味着我收到无效的文件消息。如果我将其注释掉,文件就会上传。

将允许的文件类型更改为另一种类型(例如 jpg)有效。

<?php
$allowedExts = array("xml");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "application/xml"))
&& ($_FILES["file"]["size"] < 5000000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("xml/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "xml/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "xml/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

我对 PHP 很陌生,所以要温柔,我一直在寻找类似的问题,但没有找到任何似乎可以解决这个问题的东西。

谢谢。

4

2 回答 2

0

得到它的工作

($_FILES["file"]["type"] == "text/xml")
于 2015-02-18T23:41:37.087 回答
0

来自 PHP 网站:

$_FILES['userfile']['type']

The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.

“如果浏览器提供了这些信息。” 某些浏览器不发送类型。您需要通过扩展验证或解析 XML。

检查这个。

于 2013-05-06T11:13:27.370 回答