php文件上传并移动到文件夹

时间:2013-08-22 15:07:14

标签: php file-upload

这是我的php代码

<?php
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else
        {
            mkdir("upload/".$title, 0700);
            move_uploaded_file($_FILES["file"]["tmp_name"],
            "upload/".$title . $_FILES["file"]["name"]);
            echo "Stored in: " ."upload/".$title . $_FILES["file"]["name"];
        }
    }
?> 

根据W3C的简单文件上传,但是我添加了mkdir来根据用户输入的标题创建目录。

该文件夹创建正常但文件不会移入其中,不确定这是否是我想的简单但使用连接'。'我可以像mkdir那样定义文件位置

HTML很简单,只需输入type = file,输入文本类型为标题

2 个答案:

答案 0 :(得分:2)

/之后需要$title才能使用新文件夹。

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$title."/".$_FILES["file"]["name"]);

答案 1 :(得分:0)

正如@Grim上面指出的那样,你错过了路径中的斜线。我想解释一下原因:

echo "Stored in: " ."upload/".$title . $_FILES["file"]["name"];
                                  --^

将其更改为以下内容可解决问题:

echo "Stored in: " ."upload/".$title . "/" . $_FILES["file"]["name"];

您的路径不正确,move_uploaded_file将无法在指定的路径中找到该文件,您的代码将无法按预期工作。

没有斜杠,这就是你的函数实际看起来的样子(假设你在其间的某处定义了$ title变量):

upload/fooFilename

你真的需要:

upload/foo/Filename

希望这有帮助!