2

PHP を使用してローカルホストにファイルをアップロードできません。簡単な html フォームと php スクリプトを作成しました。ただし、これらのエラー メッセージが表示されます。

「インポート.html」

<html>
    <body>
        <form action="import.php" method="POST" enctype="multipart/form-data">
            <p>
                <label for="file">Choose import.xml</label><br/>
                <input type="file" name="import" id="import" /></p>
            <p><input type="submit" name="submit" value="Submit" /></p>
        </form>
    <body>
</html>

「インポート.php」

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

        if (file_exists("upload/" . $_FILES["import"]["name"]))
        {
            echo $_FILES["import"]["name"] . " already exists. ";
        }
        else
        {
            move_uploaded_file($_FILES["import"]["tmp_name"],
            "upload/" . $_FILES["import"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["import"]["name"];
        }
    }

?>

エラー メッセージ:

警告: move_uploaded_file(upload/import.xml) [function.move-uploaded-file]: ストリームを開くことができませんでした: 20 行目の C:\xampp\htdocs\teecom\admin\import.php にそのようなファイルまたはディレクトリはありません

警告: move_uploaded_file() [function.move-uploaded-file]: 'C:\Windows\Temp\phpD02C.tmp' を C:\xampp\htdocs\teecom\admin\ の 'upload/import.xml' に移動できません20 行目の import.php 格納場所: upload/import.xml

4

4 に答える 4

2

Windows を使用しているようです。

可能であれば、宛先パスを相対パスから絶対パスに変更します。例えば:

move_uploaded_file($_FILES["import"]["tmp_name"],
            "C:/upload/" . $_FILES["import"]["name"]);

またはパスを試してください:

$_SERVER['DOCUMENT_ROOT'] . '/upload/' . $_FILES['import']['name']

また、アップロードする前に、まず C:\upload\ または C:\xampp\htdocs\upload\ ディレクトリを作成してみてください。

于 2012-07-11T15:24:11.143 に答える
1

さて、あなたのローカルホストディレクトリによると、これを試すことができます:

if (!file_exists("teecom/upload"))
{
    mkdir("teecom/upload", 0777, true);
}
if (file_exists("teecom/upload/" . $_FILES["import"]["name"]))
{
    echo $_FILES["import"]["name"] . " already exists. ";
}
else
{
    move_uploaded_file($_FILES["import"]["tmp_name"],
    "teecom/upload/" . $_FILES["import"]["name"]);
    echo "Stored in: " . "upload/" . $_FILES["import"]["name"];
}
于 2012-07-11T15:42:29.647 に答える
0

move_uploaded_fileファイルは、関数がファイルを移動するはずの一時フォルダーに明らかにアップロードされていません。PHP が使用している一時フォルダーへの書き込み権限がないことが最も頻繁に発生する理由はたくさんあります。

于 2012-07-11T14:46:46.230 に答える