Questo è l'ultimo script che ho provato
Mi sembrava a posto ma non funziona

codice:
<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) 
{ if ($_FILES["file"]["error"] > 0) 
{ echo "Return Code: " . $_FILES["file"]["error"] . "
"; } 
else 
{ echo "Upload: " . $_FILES["file"]["name"] . "
"; echo "Type: " . $_FILES["file"]["type"] . "
"; 
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB
"; 
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
"; 
if (file_exists("upload/" . $_FILES["file"]["name"])) 
{ 
echo $_FILES["file"]["name"] . " already exists. "; } 
else 
{ move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); 
echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } 
else 
{ 
echo "Invalid file"; } 
?>