Foros del Web » Programando para Internet » PHP »

Subir imagen

Estas en el tema de Subir imagen en el foro de PHP en Foros del Web. Hola: Tengo un formulario desde donde se puede subir una imagen personal (típico avatar) El caso es que sigo los pasos y tal y hay ...
  #1 (permalink)  
Antiguo 27/04/2009, 11:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Subir imagen

Hola:

Tengo un formulario desde donde se puede subir una imagen personal (típico avatar)

El caso es que sigo los pasos y tal y hay un sitio donde falla. No da error en sí, pero yo, usando ECHO consigo ver donde no puede avanzar:

Código PHP:
//Pongo algunos pasos previos para que sepais de donde sale cada cosa:
$nueva_imagen=imagecreatefromjpeg($uploaded_file);
$tmp=imagecreatetruecolor($nuevo_ancho,$nuevo_alto);
imagecopyresampled($tmp,$nueva_imagen,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho,$alto)

//Esta es la zona crítica...
$nueva_ruta="http://dominio.com/avatares/1.jpg";
if(!
imagejpeg($tmp,$nueva_ruta,100)) 
echo 
" Error moviendo."//AQUÍ FALLA!!!!!!!!!! 
Supongo que me fallará por la ruta... No se si hay que ponerla relativa, absoluta o da igual, el caso es que no me tira de ninguna forma.
La página que procesa la imagen está a la misma altura que la de los avatares, con lo que su ruta relativa sería "../avatares/1.jpg"

Gracias a todos por vuestro tiempo!
  #2 (permalink)  
Antiguo 27/04/2009, 11:08
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Subir imagen

Hola Sancas...

Es que pueden ser varias cosas, has revisado:

1. Tener permisos de escritura sobre tu directorio
2. Manejar sólo archivos .jpg (porque en tu código solo permites ese tipo de imagen)
3. La ruta donde intentas moverlo esté mal.
4. Probaste en local antes de llevarlo a otro server?

Mira esos parámetros, quizás te ayuden...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 27/04/2009, 11:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagen

Cita:
Iniciado por Carxl Ver Mensaje
Hola Sancas...

Es que pueden ser varias cosas, has revisado:

1. Tener permisos de escritura sobre tu directorio
2. Manejar sólo archivos .jpg (porque en tu código solo permites ese tipo de imagen)
3. La ruta donde intentas moverlo esté mal.
4. Probaste en local antes de llevarlo a otro server?

Mira esos parámetros, quizás te ayuden...

Saludos
Hola Carxl, gracias por contestar:

1. Permisos: desde el FTP veo que los permisos del directorio son drwxrwxr-x
2. Tipos de imagen: Realmente tengo un código que mira qué tipo de imagen es (gif, jpg o png) y la crea en consecuencia:
Código PHP:
if(exif_imagetype($uploaded_file) == IMAGETYPE_JPEG)
{
    echo 
"Jpg ";
    if(!
$nueva_imagen=imagecreatefromjpeg($uploaded_file)) echo " Error creando.";
}
                            
if(
exif_imagetype($uploaded_file) == IMAGETYPE_GIF)
{
    echo 
"Gif ";
    if(!
$nueva_imagen=imagecreatefromgif($uploaded_file)) echo " Error creando.";
}
                                
if(
exif_imagetype($uploaded_file) == IMAGETYPE_PNG)
{
    echo 
"Png ";
    if(!
$nueva_imagen=imagecreatefrompng($uploaded_file)) echo " Error creando.";

3. Ruta: Pues poniendo la absoluta no debería haber problema, no?
Pongo la ruta temporal que crea php y me sale lo siguiente: "/tmp/phpnombrealeatorio"
4. Local: Estoy haciendo todo directamente en el server... Y corrijo los errores arriba, no puedo poner a hacerlo en el local ahora, me puedo volver loco si tengo que repetir todo...

Gracias por todo, a ver si se te ocurre donde está el fallo...
  #4 (permalink)  
Antiguo 27/04/2009, 18:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagen

He probado a cambiar los permisos (a 0777) y sin resultados...

Voy a poner el código completo para que lo veais:
El fallo me lo da en el Error7

Código PHP:
if($_FILES['avatar']['name']!="" && $_FILES['avatar']['size']!=0//Entra
{
    
$uploaded_file=$_FILES['avatar']['tmp_name'];

    if(
exif_imagetype($uploaded_file) != IMAGETYPE_GIF 
    
&& exif_imagetype($uploaded_file) != IMAGETYPE_JPEG 
    
&& exif_imagetype($uploaded_file) != IMAGETYPE_PNG)
    {
        echo 
"Error1";
        exit;
    }else{
        
//Es una imagen de verdad
        
        //Miramos que no exceda de 20kb
        
if($_FILES['avatar']['size']>20500)
        {
            echo 
"Error2";
            exit;
        }else{
                
            
//Obtenemos la altura y anchura
            
$info_imagen getimagesize($uploaded_file);
            
$alto $info_imagen[1];
            
$ancho $info_imagen[0];
            
//Determinamos los nuevos altos y anchos
            
if($alto>$ancho)
            {
                if(
$alto>100)
                {
                    
$nuevo_alto=100;
                    
$nuevo_ancho=($ancho*$nuevo_alto/$alto);    
                }else{
                    
$nuevo_alto=$alto;
                    
$nuevo_ancho=$ancho;
                }                    
            }else{
                if(
$ancho>100)
                {
                    
$nuevo_ancho=100;
                    
$nuevo_alto=($alto*$nuevo_ancho/$ancho);
                }else{
                    
$nuevo_alto=$alto;
                    
$nuevo_ancho=$ancho;
                }
            }
                        
            
//Creamos una jpg a partir de la imagen
            
if(exif_imagetype($uploaded_file) == IMAGETYPE_JPEG)
            {
                if(!
$nueva_imagen=imagecreatefromjpeg($uploaded_file))
                {
                    echo 
"Error3";
                    exit;
                } 
            }
            
            if(
exif_imagetype($uploaded_file) == IMAGETYPE_GIF)
            {
                if(!
$nueva_imagen=imagecreatefromgif($uploaded_file))
                {
                    echo 
"Error4";
                    exit;
                } 
            }
                        
            if(
exif_imagetype($uploaded_file) == IMAGETYPE_PNG)
            {
                if(!
$nueva_imagen=imagecreatefrompng($uploaded_file))
                {
                    echo 
"Error5";
                    exit;
                } 
            }
                        
            
//Creamos una imagen con las nuevas dimensiones
            
$tmp=imagecreatetruecolor($nuevo_ancho,$nuevo_alto);
            
//La "pegamos"
            
if(!imagecopyresampled($tmp,$nueva_imagen,0,0,0,0,$nuevo_ancho,$nuevo_alto,$ancho,$alto))
            {
                echo 
"Error6";
                exit;
            } 
                                                    
                                                
            
$nueva_ruta='http://dominio.com/avatares/1.jpg';
                        
            if(!
imagejpeg($tmp,$nueva_ruta,100))
            {
                echo 
"Error7"//Aquí es donde falla!!!!!!!!!!!!
                
exit;
                
            }
                    
            
//Borramos los rastros
            
imagedestroy($nueva_imagen);
            
imagedestroy($tmp);
        }
    }
}else{
    echo 
"Debe subir una imagen";

Gracias a todos por vuestro tiempo!
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:34.