PHP文件上载无法工作的可能原因

时间:2012-04-09 22:23:23

标签: php file-upload

这是HTML:

<h1>Upload Custom Logo</h1>
<form action="settings.php" enctype="multipart/form-data" method="post">
<input type="file" name="Logo" />
<input type="submit" value="Upload" name="logoUpload" />
</form>

这是PHP:

<?php /* Handle Logo Upload */
if($_POST['logoUpload']) {

$target_path = "uploads/";
$Logo = $_FILES['Logo']['name'];

$target_path = $target_path . basename( $_FILES['Logo']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo '<div class="statusUpdate">The file '.  basename( $_FILES['Logo']['name']). 
        ' has been uploaded</div>';
    }   

} else{
    echo '<div class="statusUpdate">There was an error uploading the file to: '.$target_path.', please try again!  Error Code was: '.$_FILES['Logo']['error'].'</div>';
}

}
?>

它始终转到该代码上的“else”语句,我在与此php文件设置为777文件权限相同的目录中有一个uploads文件夹。我测试上传的图片大小不超过10KB。但是move_uploaded_file()总是失败,除了使用else语句生成的自定义错误消息之外,它不会返回任何错误消息。

2 个答案:

答案 0 :(得分:3)

您指的是$_FILES数组中的两个不同名称的文件 -
$Logo = $_FILES['Logo']['name'];
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)

是哪一个? Logouploadedfile

您可能正在引用不存在的数组索引。

答案 1 :(得分:1)

可能的原因:

  • 以某种方式上传文件失败。
  • 您无权将文件移至目标路径。

正如PHP.NET所说:

  

如果filename不是有效的上传文件,则不会执行任何操作,并且   move_uploaded_file()将返回FALSE。

     

如果filename是有效的上传文件,但某些文件无法移动   原因,不会发生任何操作,move_uploaded_file()将返回   假。此外,还会发出警告。

参考:http://php.net/manual/en/function.move-uploaded-file.php