无法使其他两个参数正常工作(PHP、文件上载)


Cannot make two argument elseif work correctly (PHP, file upload)

每当我上传超过1mb限制的jpg或png文件时,如果脚本声明文件格式和文件大小都不符合标准,则会显示第一个else。我想让它识别jpg和png格式是正确的。其他变体(不同的文件类型,jpgs<1mb确实按预期工作)html文件:

<html>
<head>
    <title>Post your images</title>
</head>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
Ttile: <input type="text" name="title" id="title"> <br>
Watermark: <input type="text" name="watermark" id="watermark"> <br>
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html> 

php文件:

<!DOCTYPE html>
    <html>
    <head>
        <title>Gallery</title></head>
    <body>
    <?php
        $allowedExts = array("jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 1048576)
    && in_array($extension, $allowedExts))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "File Type: " . $extension . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        move_uploaded_file($_FILES["file"]["tmp_name"],
         "upload/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
      }
    elseif(
           ($_FILES["file"]["type"] !== "image/jpeg")
       and ($_FILES["file"]["type"] !== "image/jpg")
       and ($_FILES["file"]["type"] !== "image/png")
       and ($_FILES["file"]["size"] < 1048576)
       )
      {
        echo "Wrong file format and too big file<br>";
      }

    elseif(($_FILES["file"]["size"] < 1048576)){
        echo "File is too big, maximum size is 1MB";
    }
    else{
         echo "File format not supported! Supported files formats are png i jpg.";
    }
    ?> 
    </body>
    </html> 
 (...) and ($_FILES["file"]["size"] < 1048576)

你没有忘记做>而不是<吗?

你能试试吗,

     <?php
            $allowedExts = array("jpeg", "jpg", "png");
            $temp = explode(".", $_FILES["file"]["name"]);
            $extension = end($temp);
            if ((($_FILES["file"]["type"] == "image/jpeg")
            || ($_FILES["file"]["type"] == "image/jpg")
            || ($_FILES["file"]["type"] == "image/png"))
            && ($_FILES["file"]["size"] < 1048576)
            && in_array($extension, $allowedExts))
              {
              if ($_FILES["file"]["error"] > 0)
                {
                echo "Error: " . $_FILES["file"]["error"] . "<br>";
                }
              else
                {
                echo "Upload: " . $_FILES["file"]["name"] . "<br>";
                echo "File Type: " . $extension . "<br>";
                echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
                move_uploaded_file($_FILES["file"]["tmp_name"],
                 "upload/" . $_FILES["file"]["name"]);
                  echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
                }
              } 
            elseif($_FILES["file"]["size"] > 1048576){
                echo "File is too big, maximum size is 1MB";
            }
            else{
                 echo "File format not supported! Supported files formats are png i jpg.";
            }
        ?>