0

写真をアップロードできる Web ページに取り組んでいますが、コードが機能していないようです。これは、profile2.php として保存されたフォーム コードです。

<form enctype="multipart/form-data" action="upload2.php" method="POST">
Please choose a file: <input name="uploaded" type="file" /><br />
<input type="submit" value="Upload" />
</form>

これが upload2.php コードです。

<?php
  $target = "pictures/";
  $target = $target . basename( $_FILES['uploaded']['name']) ;
  $uploaded = basename( $_FILES['uploaded']['name']) ;

  //This is our size condition
  if ($uploaded_size > 1) {
     echo "Your file is too large.<br>";
     die();
  }

  // This is our limit file type condition
  echo $uploaded_type;
  if (!($uploaded_type=="image/png")&&!($uploaded_type=="image/jpg")) {
      echo "You may only upload png or jpg files.<br>";
      die();
  }

  if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) {
      echo "The file ". $uploaded ." has been uploaded";
  } else {
      echo "Sorry, there was a problem uploading your file.";
  }
?>

ということでまずは。PNG 画像をアップロードしようとすると、2 番目の if ステートメントが読み取られ、png ファイルと jpg ファイルのみが許可されると表示されました。私のファイルは確かに1KBを超えていたので、最初のif文を読むことを期待していました。最初の if ステートメントを無視して 2 番目の if ステートメントを実行した理由がわかりません。アップロード コードを手伝ってくれる人はいますか?

4

1 に答える 1

2

あなたはやみくもにアップロードが成功したと思い込んでおり、やみくもに未定義の変数を使用し、それらが実際に存在するふりをしています。おそらくこれはあなたを助けるでしょう:

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
   if($_FILES['uploaded']['error'] !== UPLOAD_ERR_OK) {
       die("Upload failed with error code " . $_FILES['uploaded']['error']);
   }
   if ($_FILES['uploaded']['size'] > 1) {
      die("File is too large");
      // Are you sure you want "1"? You're basically allowing 1-byte and 0-byte files only
      // since this size is specified in bytes, not kilobytes
   }
   etc...
}

エラーコードはここで定義されています: http://www.php.net/manual/en/features.file-upload.errors.php

于 2013-07-01T22:09:57.043 に答える