我在一个简单的php脚本中遇到了问题,在这个脚本中我可以将文件上传到某个文件夹。我已经尝试了多种方法来做到这一点,但仍然没有成功。
我的代码中的任何错误或关于如何更正问题的建议都将被妥善处理。
主要Php代码:
<p>Browse For a File on your computer to upload it!</p>
<form enctype="multipart/form-data" action="upload_photos.php" method="POST">
Choose Photo:
<input name="userfile" type="file" /><br />
<input type="submit" value="Upload Photo" />
<?PHP
if ($userfile_size>250000)
{$msg=$msg."Your uploaded file size is more than 250KB so please reduce the file size and then upload.<BR>";
$file_upload="false";}
else{
if (!($userfile_type<>"image/jpeg" OR $userfile_type<>"image/tiff" OR $userfile_type<>"image/png"))
{$msg=$msg."Your uploaded file must be of JPG, PNG, or tiff. Other file types are not allowed<BR>";
$file_upload="false";}
}
?>
</form>
</label>
</form>
点击时调用的Php代码(upload_photos.Php)
<?php
$target_path="uploads/";
chmod("uploads/", 0755);
$target_path=$target_path . basename( $_FILES['uploadedfile']['name']);
$test=move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path);
if($test) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
var_dump($test);
}
?>
我不明白为什么我的最终结果[点击"上传文件"按钮]只包括以下结果:
"上传文件时出错,请重试!bool(false)"
还有一件事:我还尝试使用$target_path和chmod的完整计算机文件夹路径。
有人看到我做错了什么吗?
您有<input name="userfile"
,但在脚本中使用$_FILES['uploadedfile']
-使用其中一个。
除此之外,请确保chmod
工作正常并且文件夹可写。
bool(false)
是var_dump($test);
的输出,表示move_uploaded_file
返回false。
作为一个基本的调试步骤,您应该尝试var_dump($_FILES)
,以确保您正在访问该数组的正确元素(我可以从您的代码中看出您没有,索引将是<input type="file"/>
元素的name
属性)。
你的逻辑至少还有一个严重的缺陷。。。上传表单中的PHP代码没有任何意义。该PHP代码块将在用户上传文件之前在服务器端执行。它不可能工作。您正在检查的两个变量$userfile_size
和$userfile_type
在任何地方都没有定义。
在我的情况下,我忘记创建一个要上传的文件夹。因此,请检查指定的上传路径是否可用。