bool(false)上传文件

时间:2012-02-28 18:31:20

标签: php apache file upload

我遇到一个简单的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>

点击(upload_photos.php)

时调用的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的完整计算机文件夹路径。

有人看到我做错了吗?

3 个答案:

答案 0 :(得分:2)

您有<input name="userfile"但在脚本中使用$_FILES['uploadedfile'] - 使用其中一个。

除此之外,请确保chmod有效且文件夹可写。

答案 1 :(得分:1)

bool(false)var_dump($test);的输出,表示move_uploaded_file返回false。

作为一个基本的调试步骤,你应该尝试var_dump($_FILES)以确保你正在访问该数组的正确元素(我可以从你的代码中看出你不是,索引将是{{ 1}} name元素的属性。

你的逻辑中至少还有一个严重的缺陷......上传表单中的PHP代码没有任何意义。在用户上传文件之前,该PHP代码块将在服务器端执行。它不可能奏效。您正在检查的两个变量<input type="file"/>$userfile_size未在任何地方定义。

答案 2 :(得分:0)

在我的情况下,我忘记创建要上传的文件夹。因此,请检查指定的上传路径是否可用。