2011-04-15 5 views
0

J'ai ce script pour une validation d'image. fonctionne bien avec des images avec 500 kb ou 1,5 mb par exemple, mais si j'essaye avec des images avec 4mb ou 6 par exemple, donnez l'erreur Format non valide et non la "taille large". Pourquoi?étrange image php validation

$imageData = @getimagesize($_FILES["userfile"]["tmp_name"]); 

     if($imageData === FALSE || !($imageData[2] == IMAGETYPE_GIF || $imageData[2] == IMAGETYPE_JPEG || $imageData[2] == IMAGETYPE_PNG)) { 
      echo "<li>Invalid format</li>"; 
      die(); 
     } 
     else { 
      if($_FILES["userfile"]["size"] >= 2000000) { 
       echo "<li>The size large</li>"; 
       die(); 
      } 
       else { 
      //mystuff 
} 

grâce

+0

Que fait '@ getimagesize'? –

Répondre

1

Vous pouvez également vérifier votre post_max_size et upload_max_filesize dans php.ini. Si les fichiers que vous essayez de télécharger sont trop volumineux, je crois que le tableau _FILES ne sera pas rempli.

0

utilisation $ _FILES [ 'size'] .. getimagesize est extrêmement lent pour les grandes images

1

Vous n'êtes pas vérifier si le téléchargement de fichier réussi. PHP a une limite de mémoire qui s'applique aux fichiers téléchargés, et vos «grandes» images dépassent probablement cette limite. Vous devriez vérifier les téléchargements comme ceci:

if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK) { 
    ... uploaded ok ... 
} else 
    echo "File upload failed on 'userfile' with error: " . $_FILES['userfile']['error']; 
} 
+0

erreur de syntaxe ligne 2, caractère "..." non reconnu –