Foros del Web » Programando para Internet » PHP »

Error con validacion de imagenes al subir

Estas en el tema de Error con validacion de imagenes al subir en el foro de PHP en Foros del Web. Saludos a todos... Estoy creando un formulario para subir fotos a un apartado, pero si subo fotos con extension .JPG en mayusculas, no me lo ...
  #1 (permalink)  
Antiguo 18/07/2012, 15:56
Avatar de Kronos_Corp  
Fecha de Ingreso: marzo-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
Error con validacion de imagenes al subir

Saludos a todos...

Estoy creando un formulario para subir fotos a un apartado, pero si subo fotos con extension .JPG en mayusculas, no me lo permite, de hecho ni me lo toma en cuenta, en cambio si subo imagenes .jpg en minusculas no tengo problema, la verdad no veo en donde pueda estar el error, espero y me ayuden les dejo mi codigo

Código PHP:
if (isset ($_FILES["archivos"])) {
        
$tot count($_FILES["archivos"]["name"]);
        for (
$i 0$i $tot$i++){
            
$filetype $_FILES['archivos']['type'][$i];
            
$type substr($filetype, (strpos($filetype,"/"))+1);
            
$types=array("jpeg","gif","png","JPG","JPEG");            
            if (
in_array($type$types) ) {
            
                if (
is_uploaded_file($_FILES['archivos']['tmp_name'][$i])  ){
                    
$imagen explode(".",$_FILES['archivos']['name'][$i]);
                    
$aleatorio rand(0,9).rand(100,9999).rand(100,9999);
                    
$aleatorio rand(0,9).rand(100,9999).rand(100,9999);
                    
$nombreImagenNormal $aleatorio.".".$imagen[1];
                    
$ruta='galerias/'.$nombreImagenNormal;
                    
move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $ruta);
                    
chmod($ruta,0777);
                    
//Generar Thumb
                    
if($imagen[1] == "jpg" || $imagen[1] == "jpeg"){
                        
$creada imagecreatefromjpeg($ruta);
                        
$thumb imagecreatetruecolor(150,113); 
                        
$ancho imagesx($creada);
                        
$alto imagesy($creada);
                        
imagecopyresampled($thumb,$creada,0,0,0,0,150,113,$ancho,$alto);
                        
imagejpeg($thumb,'galerias/'.$aleatorio.'_thumb.jpg',90);
                    }
                    if(
$imagen[1] == "gif"){
                        
$creada imagecreatefromgif($ruta);
                        
$thumb imagecreatetruecolor(150,113); 
                        
$ancho imagesx($creada);
                        
$alto imagesy($creada);
                        
imagecopyresampled($thumb,$creada,0,0,0,0,150,113,$ancho,$alto);
                        
imagegif($thumb,'galerias/'.$aleatorio.'_thumb.gif',90);
                    }
                    if(
$imagen[1] == "png"){
                        
$creada imagecreatefrompng($ruta);
                        
$thumb imagecreatetruecolor(150,113); 
                        
$ancho imagesx($creada);
                        
$alto imagesy($creada);
                        
imagecopyresampled($thumb,$creada,0,0,0,0,150,113,$ancho,$alto);
                        
imagepng($thumb,'galerias/'.$aleatorio.'_thumb.png',9);
                    }
                    
$imagenMini explode(".",$ruta);
                    
$rutaMini "galerias/".$aleatorio."_thumb.".$imagen[1];
                    
chmod($rutaMini,0777);
                    echo 
"<a href='".$imagenMini[0].".".$imagenMini[1]."' rel='gallery'  class='pirobox_gall' title='' ><img src='".$imagenMini[0]."_thumb.".$imagenMini[1]."' class='galeria'/></a>";
                    
//Insercion de datos en BD
                    
...
                }  
            }else{
                echo 
"Formato de Imagen no valido en el campo:".($i+1);
            }
        echo 
"<br>";
        }    
        echo 
"<br><br><h3>Galeria Creada</h3>";
    }else{
        echo 
"No hay archivos por subir";
    } 
  #2 (permalink)  
Antiguo 18/07/2012, 16:01
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Error con validacion de imagenes al subir

Sustituye esta linea
Código PHP:
Ver original
  1. if($imagen[1] == "jpg" || $imagen[1] == "jpeg")


por
Código PHP:
Ver original
  1. if($imagen[1] == "jpg" || $imagen[1] == "jpeg" || $imagen[1] == "JPG" || $imagen[1] == "JPEG")
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #3 (permalink)  
Antiguo 18/07/2012, 16:06
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 7 meses
Puntos: 76
Respuesta: Error con validacion de imagenes al subir

hola

mmmm podrias hacerlo asi:

Código PHP:
Ver original
  1. if($imagen[1] == "jpg" || $imagen[1] == "jpeg" || $imagen[1] == "JPG" || $imagen[1] == "JPEG")
  2. {
  3.                         $creada = imagecreatefromjpeg($ruta);
  4.                         $thumb = imagecreatetruecolor(150,113);  
  5.                         $ancho = imagesx($creada);
  6.                         $alto = imagesy($creada);
  7.                         imagecopyresampled($thumb,$creada,0,0,0,0,150,113,$ancho,$alto);
  8.                         $thumb = "thumb".$imagen[1];
  9.                         imagejpeg($thumb,'galerias/'.$aleatorio.$thumb,90);
  10.                    
  11. }
  #4 (permalink)  
Antiguo 18/07/2012, 16:07
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Error con validacion de imagenes al subir

Tienes varios detalles: declaras las extensiones válidas en un arreglo pero no lo usas.
Luego asumes que los archivos tienen un nombre "normal", es decir nombre.extensión, cuando fallaría con archivos de tipo hola.mundo.jpg para mitigar esto, puedes hacer:

Código PHP:
Ver original
  1. $imagen = explode(".",$_FILES['archivos']['name'][$i]);
  2.                     $aleatorio = rand(0,9).rand(100,9999).rand(100,9999);
  3.                     $aleatorio = rand(0,9).rand(100,9999).rand(100,9999);
  4.                     $nombreImagenNormal = $aleatorio.".".strtolower(array_pop($imagen));
con esto, la extensión pasaría a minúsculas y si el nombre de archivo tiene puntos, tomaría siempre el último (la extensión real)
  #5 (permalink)  
Antiguo 18/07/2012, 16:08
Avatar de Kronos_Corp  
Fecha de Ingreso: marzo-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Error con validacion de imagenes al subir

El Problema es que ni siquiera entra a esa parte, se queda en esta parte y me arroja el resultado del else

Código PHP:
Ver original
  1. if (in_array($type, $types) ) {
  2. ...
  3. }else{
  4.                 echo "Formato de Imagen no valido en el campo:".($i+1);
  5.             }
  #6 (permalink)  
Antiguo 18/07/2012, 16:13
Avatar de Kronos_Corp  
Fecha de Ingreso: marzo-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Error con validacion de imagenes al subir

ocp001a:

Entonces el la parte de arreglo con extensiones permitidas, lo eliminaría?
  #7 (permalink)  
Antiguo 18/07/2012, 17:11
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Error con validacion de imagenes al subir

1. Disculpa, no había visto que sí filtras que la extensión esté dentro de los valores permitidos en el array.
2. Puedes dejar lo del array, pero convirtiendo la extensión a minúsculas como indicaba, para no hacer tantas comparaciones en el if, además de tomar la extensión real para casos de archivos con más de un punto.
  #8 (permalink)  
Antiguo 18/07/2012, 18:24
Avatar de Kronos_Corp  
Fecha de Ingreso: marzo-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Error con validacion de imagenes al subir

Bueno utilice esta linea para sacar el tipo de mime de los archivos que subo, lo curioso es que me cualquier cantidad de tipos de formatos distintos, que subo, image/gif , image/png, text/plain,etc.

Pero específicamente para esas fotos que tiene la extensión en mayúsculas, no me devuelve nada, mmm al parecer es el tipo de formato de la imagen.

Abriendo la imagen en paint y volviendola a guardar me devolvio el tipo de MIME,

Curioso no?

Alguna sugerencia?? o opinion ante esto?
  #9 (permalink)  
Antiguo 19/07/2012, 09:39
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Error con validacion de imagenes al subir

para que obtienes el mime... hay imágenes que no tienen esa información... te recomiendo que las conviertas a minusculas como te lo indica ocp001a
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!

Etiquetas: extensiones, imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:39.