0

アップロードした画像サイズが3MBを超えた場合にエラーメッセージを出したい。これが私の現在のコードです。画像が 3MB を超えるとエラー メッセージが表示されるはずですが、何もしません。コードの何が問題になっていますか?

if ( $_FILES['file']['size'] != 0 ) 
{
 //image check start
 if ((($_FILES["file"]["type"] == "image/gif")
 || ($_FILES["file"]["type"] == "image/jpeg")
 || ($_FILES["file"]["type"] == "image/png")
 || ($_FILES["file"]["type"] == "image/pjpeg"))
 && ($_FILES["file"]["size"] < 3072000))
 //image check end
 {
      if (file_exists($upload_path."/".$_FILES["file"]["name"])) 
      {
           $file_tmp = $_FILES["file"]["name"];
      } //Link if there is already a file with identical file name
      else
      {
           $photoid = $upfile_idx.".".substr($_FILES['file']['name'],-3);
           move_uploaded_file($_FILES["file"]["tmp_name"], $upload_path."/".$photoid);
           $file_tmp = $photoid ;
      } //Upload the image file into upload folder and generate an id for the image
  }
  else
  {
      error("Maximum image size exceeded or invalid file format.");
  }
}

//insert $file_tmp into database here

----------
Error code (added later)
function error($msg)
{
  echo "<script>alert(\"$msg\");history.go(-1);</script>";
  exit;
}

私は何が問題なのかを見つけました。私のphp.iniファイルには「upload_max_filesize = 3M」があり、明らかにそれがすべての問題の原因でした. 「upload_max_filesize = 4M」に変更すると、すべてうまくいきました。ご協力ありがとうございました。

4

1 に答える 1

0

以下の何かがあなたに良いことをするはずです。

<?php
if ( $_FILES['ファイル']['サイズ'] != 0)
{
 //画像チェック開始

 if(!in_array($_FILES["file"]["type"], array("image/gif", "image/jpeg", "image/png", "image/pjpeg")))
 {
    error("ファイルは JPG/JPEG/PNG/PJEPG のみである必要があります");
    戻る;
 }
 if($_FILES["ファイル"]["サイズ"] > 3145728)
 {
    error("ファイルは 3 MB 未満である必要があります");   
    戻る;
 }
 #残りのアップロード コードは、この下にある必要があります。
}
?>

3145728 は、$_FILES["file"]["size"] によってアップロードされるファイルのサイズがバイト単位で示されるため、3 MB に変換されます。

于 2012-06-12T08:35:40.263 に答える