无法使两个参数elseif正常工作(PHP,文件上传)

时间:2013-11-24 14:27:38

标签: php file-upload if-statement

每当我上传一个高于1mb限制的jpg或png文件时,如果脚本声明文件格式和文件大小都与条件不匹配,则脚本会显示第一个。我希望它将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> 

2 个答案:

答案 0 :(得分:0)

 (...) and ($_FILES["file"]["size"] < 1048576)

您是否忘记了执行>而不是<

答案 1 :(得分:0)

你能试试吗,

     <?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.";
            }

        ?>