0

我正在尝试创建一个用于存储照片的管理面板目录创建器。我遵循了一个教程,但是根据我的喜好对其进行了调整,尽管目录创建得很好,但我无法上传文件。这是代码,你能提示我做错了什么吗?如果我正在接近这个最好的方法吗?我并不完全相信将路径设置为 '../../../' 是最好的方法。

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
    <label>Album name:</label><span class="req">*</span>
    <br />
    <input type="text" name="album_name">
    <br />
    <input type="file" name="upload" /><br /><br />
    <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
    <input type="submit" name="submit" value="Create">
</form>

<?php
if(isset($_POST['submit'])){
    $album = $_POST['album_name'];
    if(mkdir("../images/album/" . $album, 0700, true) && mkdir("../images/album/" . $album . "/album_cover", 0700, true)){
        echo "Album directory created successfully";
    }else{
        echo "Album directory failed";
    }
}

$target_path = "../images/album/" . $album . "/album_cover/";

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

if(move_uploaded_file($_FILES['upload']['name'], $target_path)){
    echo "The file ". basename($_FILES['upload']['name']) . " has been uploaded";
} else {
    echo "There was an error uploading the file, please try again!";
}

?>
4

1 回答 1

1

您已将临时上传的文件移动到目录中,因此使用tmp_name,而不是name

if(move_uploaded_file($_FILES['upload']['tmp_name'], $target_path)){
                                         ^

并且$target_path还应该包含一个有效的文件名及其扩展名。消除basename

$target_path = $target_path . $_FILES['upload']['name'];

move_uploaded_file

该函数检查以确保 filename 指定的文件是有效的上传文件(意味着它是通过 PHP 的 HTTP POST 上传机制上传的)。如果文件有效,它将被移动到目的地给定的文件名。

于 2013-10-27T14:45:48.817 回答