【发布时间】:2013-12-01 20:10:29
【问题描述】:
虽然我知道这是一个无处不在的问题,但我找不到它不起作用的原因:
我已经收集了下面的代码来实现图片上传到我的网站:
<html>
<body>
<form action="insert.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
insert.php 是:
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& 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("/httpdocs/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"/httpdocs/" . $_FILES["file"]["name"]);
echo "Stored in: " . "/httpdocs/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
嗯,成功消息显示正确。但是,没有文件上传到指定的文件夹。
有什么想法吗?
【问题讨论】:
-
检查 move_uploaded_file() 是否返回 TRUE。你可能没有写权限什么的。
-
move_uploaded_file根据成功与否返回真或假。你应该在使用它时检查它。 -
并确保您已启用错误报告。如果失败,应该显示原因。
-
您是否正在尝试写入文件系统 root 的
httpdocs文件夹?很有可能这是不正确的。 -
您应该在执行任何其他操作之前检查
$_FILES["file"]["error"]
标签: php html image forms image-uploading