Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2008, 02:57
Avatar de Threepwood
Threepwood
 
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 3 meses
Puntos: 4
Upload de imágenes, a veces funciona a veces no

Hola!

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/";
         
$namefinaltrim ($_FILES['foto']['name']);
        
$namefinalereg_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.
__________________
Equívocos sin importancia