这是我的PHP代码试图上传和移动图像。我正在我的笔记本电脑上运行它。 图像似乎正在加载(我得到“存在并成功上传。”)。但是move_uploaded_file()没有移动文件,我甚至找不到它。 我已更改目录权限...没有正面结果。 我必须拥有哪些目录权限?假设这是问题。
<?php
// upload.php
echo <<<_END
<html>
<head><meta charset="utf-8"><title>PHP Form Upload</title></head>
<body>
<form method='post' action='upload.php' enctype='multipart/form-data'>
Select File: <input type='file' name='filename' size='10' />
<input type='submit' value='Upload' />
</form>
_END;
if ($_FILES)
{
$name = $_FILES['filename']['name'];
$temp = $_FILES['filename']['tmp_name'];
$theerror = $_FILES['filename']['error'];
if(file_exists($temp)){
if(is_uploaded_file($temp)) echo "$temp exists and was uploaded successfully.<br />";
else echo "$temp exists, but not successfully uploaded. <br />";
echo "Error code $theerror . <br />";
}
else echo "$temp do not exists. <br />";
$upload_dir = "/uploads";
if(move_uploaded_file($temp, $upload_dir . "/" . $name))
echo "Uploaded image '$upload_dir/$name' <br /> <img src='$upload_dir/$name' />";
else
echo "$temp wasn't moved, why? <br />";
}
echo "</body></html>";
?>
答案 0 :(得分:0)
您可能想要一个相对于web-root的路径,而不是文件系统。
变化:
$upload_dir = "/uploads";
类似于:
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/uploads";
您还应该注意清理$_FILES['filename']['name']
变量,以避免使用../../../../passwd
等名称进行上传。
答案 1 :(得分:0)
试试这个
if (isset($_FILES['filename'])) {
$name = $_FILES['filename']['name'];
$temp = $_FILES['filename']['tmp_name'];
$upload_dir = "uploads";
if (move_uploaded_file($temp, $upload_dir . "/" . $name))
echo "Uploaded image '$upload_dir/$name' <br /> <img src='$upload_dir/$name' />";
else
echo "{$name} wasn't moved, why? <br />";
}