0

これは私の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 を入力し、タイトルに text type を入力するだけのシンプルなものです。

4

2 に答える 2

3

新しいフォルダーを使用するには、/アフターが必要です。$title

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$title."/".$_FILES["file"]["name"]);
于 2013-08-22T15:09:14.920 に答える
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

お役に立てれば!

于 2013-08-22T15:20:06.620 に答える