Ver Mensaje Individual
  #9 (permalink)  
Antiguo 25/01/2012, 20:48
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 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.