Estoy adaptando un script de upload de imagenes con redimensionamiento. Todo funciona bien, el problema es que, a veces. Me explico, el script no tenía comprobación de tamaño o tipo de archivo, entonces yo se lo coloqué. El problema es que a veces hace la comprobación y a veces no (tanto de tipo de archivo como de tamaño). Aquí el script:
Código PHP:
$tam_max = 50000;
if(is_uploaded_file($_FILES['foto']['tmp_name'])) {
if($_FILES['foto']['size'] > $tam_max) {
unlink($_FILES['foto']['tmp_name']);
echo "El archivo es demasiado grande";
die();
}
if($_FILES['foto']['type'] <> "image/gif" OR $_FILES['foto']['type'] <> "image/pjpeg" OR $_FILES['foto']['type'] <> "image/jpeg") {
unlink($_FILES['foto']['tmp_name']);
echo "El archivo no es una foto";
die();
}
//empieza la redimension, tomamos la imagen temporal subida
$info = getimagesize($_FILES['foto']['tmp_name']);
//segun el caso sera jpg, gif, png
switch ($info[2]) {
case 1:
$picture = imagecreatefromgif($_FILES['foto'] ['tmp_name']); break;
case 2:
$picture = imagecreatefromjpeg($_FILES['foto'] ['tmp_name']); break;
case 3:
$picture = imagecreatefrompng($_FILES['foto'] ['tmp_name']); break;
// etcétera //
}
$original = $picture;
$original_w = imagesx($original);
$original_h = imagesy($original);
$max = 300; //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS
if($original_w>$original_h) {
$muestra_w = $max;
$muestra_h = intval(($original_h/$original_w)*$max);
} else {
$muestra_w = intval(($original_w/$original_h)*$max);
$muestra_h = $max;
}
$muestra = imagecreatetruecolor($muestra_w,$muestra_h);
imagecopyresampled($muestra,$original,0,0,0,0, $muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya
// me verifica haya sido cargado el archivo
$ruta_destino = "../fotos/";
$namefinal= trim ($_FILES['foto']['name']);
$namefinal= ereg_replace (" ", "", $namefinal);
$uploadfile= $ruta_destino . $namefinal;
if(imagejpeg($muestra,$uploadfile,'100')) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$uploadfile."\">".$_FILES['foto']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['foto']['type']."</i><br>";
echo "Peso: <i>".$_FILES['foto']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
} else {
echo "No hubo imagen para la ficha<br />";
}
A veces por ejemplo subo una imagen jpg tamaño gigante, pero en lugar de decir, "Tamaño muy grande" pasa directamente a "No hubo imagen para la ficha". A veces subo un jpg y dice que el tipo de archivo es incorrecto, pero a veces no. También, en la última parte donde se dan los datos del archivo, la variable $_FILES['foto']['type']. aparece vacia... no dice nada de nada.
¿Alguna ayuda?
GRacias.
Samuel.