Foros del Web » Programando para Internet » PHP »

Error Upload JPG ó jpg

Estas en el tema de Error Upload JPG ó jpg en el foro de PHP en Foros del Web. Hola! Tengo el siguiente problema y aprecieria mucho una ayudita. Tengo un administrador de imagenes para una galeria de un sitio web, pero tengo problemas ...
  #1 (permalink)  
Antiguo 25/01/2012, 14:25
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Error Upload JPG ó jpg

Hola!

Tengo el siguiente problema y aprecieria mucho una ayudita.

Tengo un administrador de imagenes para una galeria de un sitio web, pero tengo problemas con las extensiones de las imagenes, cuando esta son con mayusculas (JPG) no reconoce la foto y no la carga, pero si crea el registro en la BD. Ahora si la imagen esta con la extension en minuscula funciona todo bien.

Intente transformar la variable tmp_name a minuscula con php pero no resulta.

Ojala me pueda ayudar a encontrar la solución.
  #2 (permalink)  
Antiguo 25/01/2012, 14:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error Upload JPG ó jpg

Eso suele pasar cuando estas en un sistema *nix que es sensible a mayusculas y minusculas, lo mejor es limpiar el nombre al subir las imagienes, ¿como haces el upload de tus imagenes?.

Saludos.
  #3 (permalink)  
Antiguo 25/01/2012, 15:29
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: Error Upload JPG ó jpg

Muchas gracias por responder GatorV

Utilizo un formularios, cuando lo envio se llenan las variables $_FILE y luego trabajo con
tmp y tmp_name.

Hice la prueba transformando a minusculas la variable tmp_name pero luego me dio error de ruta, dado que el archivo fisico seguia manteniendo en mayuscula.

por lo menos en window cuando subo la imagen queda con una ruta extraña en el disco C.
eso no lo estoy controlando.

Espero con esto responda a tu pregunta.

Saludos,
  #4 (permalink)  
Antiguo 25/01/2012, 15:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error Upload JPG ó jpg

No tienes que transformar tmp_name ya que ese es un nombre interno que genera PHP (de hecho ese nombre no tiene ni extensión), tienes que usar name, que es la variable que tiene el nombre del archivo, es por eso que te indico que muestres el código que usas para decirte bien donde tienes que hacer el cambio.

Saludos.
  #5 (permalink)  
Antiguo 25/01/2012, 19:29
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: Error Upload JPG ó jpg

$_FILES['imagen']['name']

esta variable debo transformar a minuscula?
  #6 (permalink)  
Antiguo 25/01/2012, 20:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error Upload JPG ó jpg

Pues todo depende si es la que usas para guardar la foto, como te digo y vuelvo a repetir, todo depende del código que uses.

Saludos.
  #7 (permalink)  
Antiguo 25/01/2012, 20:23
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Respuesta: Error Upload JPG ó jpg

Hola,

Lo que tenés que transformar a minúsculas es el nombre final del archivo. Si transformás $_FILES['imagen']['name'] a minúsculas, eso queda ahí, al terminar la ejecución se pierde.

Ya sea si la movés directamente con move_uploaded_file() o generás una nueva imagen con imagejpeg(), lo que vas a pasar a minúsculas es el nombre de destino.

De todos modos, te recomiendo sacar la extensión del nombre original, validar el resto del nombre del archivo y guardarlo indicando vos la extensión. Te digo esto porque aunque aceptes solo jpg, la extensión puede ser otra, como por ejemplo JPEG.

Saludos.
  #8 (permalink)  
Antiguo 25/01/2012, 20:27
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: Error Upload JPG ó jpg

if($_FILES['imagen']['tmp_name']){
//rename($_FILES['imagen']['name'], strtolower($_FILES['imagen']['name']));
echo $_FILES['imagen']['name'];
echo "<br>";
$_FILES['imagen']['name'] = strtolower($_FILES['imagen']['name']);
echo $_FILES['imagen']['name'];
$dir_new_g = '../data/categoria_seccion/g'.date("Ymd_His").strtolower($_FILES['imagen']['name']);
$dir_new_c = '../data/categoria_seccion/c'.date("Ymd_His").strtolower($_FILES['imagen']['name']);

$img = new ResizePicture($_FILES['imagen']['tmp_name']);
$tam = $img -> getWidth();
if($tam > 610){
$tama = 610;
}else{
$tama = $tam;
}
cambiar_segun_ancho($_FILES['imagen']['tmp_name'],$dir_new_g,$tama);
cambiar_alto_y_ancho($_FILES['imagen']['tmp_name'],$dir_new_c,90,90);
}


Ahi esta el codigo :)
  #9 (permalink)  
Antiguo 25/01/2012, 20:48
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Respuesta: Error Upload JPG ó jpg

Lo primero que te recomiendo es no usar el archivo temporal. Primero verificás el archivo con if(is_uploaded_file($_FILES['imagen']['tmp_name']) en lugar de sólo if($_FILE...). Luego, movés el archivo a una carpeta temporal propia y trabajás con ese archivo, esto evitará que falle la redimensión si suben archivos muy grandes:

Código PHP:
move_uploaded_file($_FILES['imagen']['tmp_name'],'imagentemporal.jpg'); 
A partir de ahí, hacés todo el proceso con imagentemporal.jpg. El mismo debería incluir una segunda validación del tipo de archivo, ya que no te podés fiar de la extensión. Esto lo podés hacer fácilmente con get_image_size().

Por lo que es el nombre de archivo, podés hacer algo así:
Código PHP:
$nombre=$_FILES['imagen']['name'];
$partes=explode('.',$nombre);
$extension=$partes[count($partes)-1];
array_pop($partes);
$nombre=implode('',$partes);
//finalmente, validar el nombre de archivo para evitar que te vaya a parar a otro directorio
$nombre=preg_match('/[^a-z0-9\._-]*/si','',$nombre); 
En definitiva, tu código quedaría:

Código PHP:
if(is_uploaded_file($_FILES['imagen']['tmp_name'])) {
  
$temp='imagenes_temporales/imagen.jpg';
  
move_uploaded_file($_FILES['imagen']['tmp_name'],$temp); //NO se mueve con rename

  
$isz=get_image_size($temp);
  if(
$isz[1]!=IMAGETYPE_JPEG) {
    
//formato invalido
  
} else {
    
$nombre=$_FILES['imagen']['name'];
    
$partes=explode('.',$nombre);
    
$extension=$partes[count($partes)-1];
    
array_pop($partes);
    
$nombre=strtolower(implode('',$partes));
    
$nombre=preg_match('/[^a-z0-9\._-]*/si','',$nombre);

    
$dir_new_g '../data/categoria_seccion/g'.date("Ymd_His").$nombre.'.jpg';
    
$dir_new_c '../data/categoria_seccion/c'.date("Ymd_His").$nombre.'.jpg';

    
$img = new ResizePicture($temp);
    
$tam $img -> getWidth();
    if(
$tam 610){
      
$tama 610;
    }else{
      
$tama $tam;
    }

    
cambiar_segun_ancho($temp,$dir_new_g,$tama);
    
cambiar_alto_y_ancho($temp,$dir_new_c,90,90);
  }

Claro que en la base de datos lo que guardás es $nombre o $nombre.'.jpg'.

Espero que sirva, saludos.
  #10 (permalink)  
Antiguo 26/01/2012, 11:39
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: Error Upload JPG ó jpg

Gracias geq como en estos momentos estoy trabajando, mas tarde en la casa probare el codigo y te cuento.

Saludos!

Etiquetas: imagenes, jpg, registro, upload, variables
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




La zona horaria es GMT -6. Ahora son las 13:08.