-1

//uploadForm.html

<html>
    <body>
        <form action="upload_file.php" method="post" enctype="multipart/form-data">
            <label for="browseFile">Filename : </label>
            <input type="file" name="file" id="browseFile"><br> 
            <input type="submit" name="submit" value="Submit">
    </body>
</html>

//upload_file.php

<?php
  $allowedExt = array("png","jpg");
    $temp = explode(".",$_FILES["file"]["name"]);
    $extension = end($temp);
    echo "uploading...";
    if((($_FILES["file"]["type"]=="image/png") || ($_FILES["file"]["type"]=="image/jpg")) && ($_FILES["file"]["size"] < 1000000))
    {
        echo "success";
        if($_FILES["file"]["error"] > 0)
        {
            echo "error in uploading" . $_FILES["file"]["error"]."<br>";
        }
        else
        {
            echo "<p>uploaded successfully</p>";
        }
    }
    else
        echo "invalid file" ;

    echo $_FILES["file"]["name"]."stored in ".$_FILES["file"]["tmp_name"]."<br>";
    move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/".$_FILES["file"]["name"]);
    echo "moved Successfully";

?>

一時ディレクトリ名をエコーし​​ようとすると、空白になります。アップロードされたファイルが見つかりません。MAMP/htdocsフォルダにもディレクトリにもありません/tmp/

ディレクトリがありません。ディレクトリが存在しない場合、プログラムはuploadsディレクトリを/MAMP/htdocs/作成しませんか?

4

3 に答える 3

2

最終的な指示では、$_FILES['name']['tmp_name']代わりに$_FILES['file']['tmp_name'].

ところで、スクリプトにいくつかのエラーがあります。

  1. 誰かが無効なファイルをアップロードした場合でも、エラー メッセージを表示しますが、最終的な場所に移動します。
  2. $_FILES["file"]["type"]ブラウザ (つまり、クライアント) から送信される値です。悪意のある攻撃者は、あらゆる種類のファイルを送信し、それを に偽装する可能性がimage/pngあります。この値は信頼できません。代わりに、 を使用できますgetimagesize。これは、画像の MIME タイプを含む配列を返します (サーバーによって (つまり、あなたによって) 検出されます)。非画像の MIME タイプを検出するにはFileInfo、具体的に, を使用できますfinfo_file

また、php スクリプトは、uploadsフォルダーが存在しない場合は作成せず、代わりにエラーを表示します (そして何もしません)。最初にこのフォルダーを作成し、php スクリプトを実行しているユーザー (通常は http サーバーを実行しているユーザー) がそのディレクトリに対する書き込み権限を持っていることを確認する必要があります。

編集:一時ディレクトリにアップロードされたファイルが表示されないため( http://www.php.net/manual/en/features.file-upload.post-method.phpを引用):

ファイルが移動または名前変更されていない場合、ファイルは要求の最後に一時ディレクトリから削除されます。

于 2013-07-25T07:50:58.473 に答える
0

$_FILES["name"]["tmp_name"]存在しません。存在する必要があります$_FILES["file"]["tmp_name"]

于 2013-07-25T07:50:27.813 に答える