限制PHP表单只能上传一定大小的GIF,jpeg或png?

时间:2016-01-02 09:35:24

标签: php

我在使用当前的php图片上传器时遇到了一些问题。似乎有些人滥用它并上传任何大量文件而不仅仅是jpegs,png和gifs,这会对我的带宽产生影响,而我无法想象它的安全性。

是否可以限制允许上传的内容?也可以按尺寸来计算?

[[[ 1.  4.]
  [ 2.  5.]
  [ 3.  6.]]]

提前谢谢!

3 个答案:

答案 0 :(得分:4)

您应该限制服务器配置中上传文件的最大大小。如果你不能这样做,那么在你的应用程序代码中实现大小检查。

<?php
if ($_FILES["fileField"]["size"] > 500000) { // 500KB
    exit("Sorry, your file is too large.");
}

答案 1 :(得分:1)

if if(isset($ _ POST [&#39; button&#39;])){

$errors = false;
$target_file = "upload/". basename($_FILES["fileField"]["name"]);
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

// Check if image file is a actual image or fake image
$check = getimagesize($_FILES["fileField"]["tmp_name"]);
if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
} else {
    echo "File is not an image.";
    $errors = true;
}

// Allow certain file formats
if($imageFileType != "jpg" && 
   $imageFileType != "png" && 
   $imageFileType != "jpeg"
   && $imageFileType != "gif" ) {
      echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
      $errors = true;
}

//check file size
if ($_FILES["fileField"]["size"] > 500000) { // 500KB
    echo "Sorry, your file is too large.";
    $errors = true;
}

if ($errors == false){
  // move uploaded file
}

答案 2 :(得分:0)

定义最大文件大小和文件类型。  你可以创建一个应该上传的图像类型数组。 假设您上传时没问题。

<?php
//file size in bytes e.g 1000kB or 1MB
$fleSize = 1000000;

fileType = array('image/png', 'image/gif', 'image/jpeg');

if($_FILES['fileField']['size'] > $fileSize){

    echo "File too large.............";
}
 else{

   //see if the file type is in fileType array.

       if(!array_key_exists($_FILES['fileField']['type'], $fileType)){

      echo"Please upload a png, jpg, jpeg or gif file.";
       }else{

     //move uploaded file
       }

}

?>