我正在尝试创建一个表单,用户可以将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的新手,所以要温和,我已经找了类似的问题,但没有找到任何似乎可以解决这个问题。
感谢。
答案 0 :(得分:0)
来自PHP网站:
$ _ FILES [ 'userfile的'] [ '类型']
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。
检查一下。
答案 1 :(得分:0)
使用
($_FILES["file"]["type"] == "text/xml")