2

HTMLからPHPベースのWebサーバーへのファイルのアップロードで問題が発生しました。以下は私のHTMLコードです。ここでは問題はないと思います。

<html>
 <body>

  <form action="upload.php" method="post"
   enctype="multipart/form-data" action="2.2.2.cgi">
   <input type="file" name="file" id="file" size="35"><br>
   <input type="submit" name="submit" id="submit" value="Submit">
  </form>

 </body>
</html>

PHPコード:

<?php

define ('MAX_FILE_SIZE', 1000000);

$permitted = array('image/gif', 'image/jpeg', 'image/png', 'image/pjpeg', 'text/plain');

if  ($_FILES['file']['type'] == $permitted 
    && $_FILES['file']['size'] > 0 
    && $_FILES['file']['size'] <= MAX_FILE_SIZE) {
      move_uploaded_file($_FILES, $uploadedfile);
      echo ('<img src="'.$uploadedfile'" />');
}
?>

PHPで動作させる方法がわかりません。私はいくつかの異なる方法を試してきましたが、上記のコードは、値を新しい変数に格納しようとすることでそれを理解するための私の最新の必死の試みです。私がやりたいことは次のとおりです。

  • アップロードできるファイルの種類とサイズを制限します。
  • ファイルは写真ですか?画像を表示します。
  • 平文ファイルですか?ファイルの内容を表示します。
  • 許可されていないファイルですか?ファイルの名前、タイプ、サイズを表示します。

どんな種類のヒントや助けも大歓迎です。ありがとう!

PS。稼働していないため、現時点ではセキュリティの問題は関係ありません。

4

2 に答える 2

3

わかった。完全にテストされ、コメントされたコード片。

アップロード.php

define ('MAX_FILE_SIZE', 1000000);

$permitted = array('image/gif', 'image/jpeg', 'image/png', 'image/pjpeg', 'text/plain'); //Set array of permitted filetypes
$error = true; //Define an error boolean variable
$filetype = ""; //Just define it empty.

foreach( $permitted as $key => $value ) //Run through all permitted filetypes
{
  if( $_FILES['file']['type'] == $value ) //If this filetype is actually permitted
    {
        $error = false; //Yay! We can go through
        $filetype = explode("/",$_FILES['file']['type']); //Save the filetype and explode it into an array at /
        $filetype = $filetype[0]; //Take the first part. Image/text etc and stomp it into the filetype variable
    }
}

if  ($_FILES['file']['size'] > 0 && $_FILES['file']['size'] <= MAX_FILE_SIZE) //Check for the size
{
    if( $error == false ) //If the file is permitted
    {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); //Move the file from the temporary position till a new one.
              if( $filetype == "image" ) //If the filetype is image, show it!
              {
                echo '<img src="upload/'.$_FILES["file"]["name"].'">';
              }
              elseif($filetype == "text") //If its text, print it.
              {
                echo nl2br( file_get_contents("upload/".$_FILES["file"]["name"]) );
              }

    }
    else
    {
        echo "Not permitted filetype.";
    }
}
else
{
  echo "File is too large.";
}

このフォーム form.htmlで使用

  <form action="upload.php" method="post"
   enctype="multipart/form-data" action="upload.php">
   <input type="file" name="file" id="file" size="35"><br>
   <input type="submit" name="submit" id="submit" value="Submit">
  </form>

 </body>
</html>
于 2013-01-22T22:24:55.137 に答える