1

そのため、ユーザーが任意の doc または docx フォルダーをアップロードできるファイル アップロード部分が Web サイトにあります。私のhtmlコードは次のとおりです。

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    Select a file: <input type="file" name="upload">
<input type="submit">

そして、upload_file.php のコードは次のとおりです。

<?php
    session_start();
    $allowedExts = array("doc", "docx");
    $extension = end(explode(".", $_FILES["upload"]["name"]));

    if (($_FILES["upload"]["size"] < 200000)
    && in_array($extension, $allowedExts)) {
        if ($_FILES["upload"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
        }
        else
        {
            echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
            echo "Type: " . $_FILES["upload"]["type"] . "<br />";
            echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
            echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";

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

ただし、成功メッセージで返信されても​​、これは何もアップロードしません。ディレクトリを作成できないためだと思います。上記のコードに何か問題がありますか、それともディレクトリを作成するためにコードを追加する必要がありますか? ここで私のフォルダー構造がまったく役立つ場合:

フォルダ

4

3 に答える 3

14

ファイルを移動しようとしているディレクトリを作成する必要があります。これは、move_uploaded_file によって自動的に作成されません。

mkdir() ( http://php.net/mkdir ) を使用してディレクトリを作成し、ファイルを移動します。

これは、スクリプトの代替エンディングです。

// Create directory if it does not exist
if(!is_dir("Proposals/". $_SESSION["FirstName"] ."/")) {
    mkdir("Proposals/". $_SESSION["FirstName"] ."/");
}

// Move the uploaded file
move_uploaded_file($_FILES["upload"]["tmp_name"], "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);

// Output location
echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
于 2012-10-02T23:43:28.163 に答える
2

ディレクトリが存在するかどうかを確認し、存在しない場合は作成する必要があります。

if (!file_exists("Proposals/". $_SESSION["FirstName"])) {
      mkdir("Proposals/". $_SESSION["FirstName"]);
}
于 2012-10-02T23:47:00.297 に答える
0

存在しないディレクトリにファイルをアップロードしているため、最初に作成する必要があります。upload_file.php は次のようになります。

<?php
session_start();
$allowedExts = array("doc", "docx");
$extension = end(explode(".", $_FILES["upload"]["name"]));

if (($_FILES["upload"]["size"] < 200000)
&& in_array($extension, $allowedExts)) {
    if ($_FILES["upload"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
        echo "Type: " . $_FILES["upload"]["type"] . "<br />";
        echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";

        if (file_exists("Proposals/".$_SESSION["FirstName"] ."/" . $_FILES["upload"]["name"]))
        {
            echo $_FILES["upload"]["name"] . " already exists. ";
        }
        else
        {
            // Check if directory exists if not create it 
            if(!is_dir("Proposals/". $_SESSION["FirstName"] ."/")) {
               mkdir("Proposals/". $_SESSION["FirstName"] ."/");
             }
             move_uploaded_file($_FILES["upload"]["tmp_name"],
            "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
            echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
        }
    }
} else {
    echo "Invalid file";
}
?>
于 2016-01-27T21:53:51.340 に答える