Foros del Web » Programando para Internet » PHP »

Problema con función para subir imágenes

Estas en el tema de Problema con función para subir imágenes en el foro de PHP en Foros del Web. Hola foreros! Estoy creando un sistema de galería de imágenes subidas al servidor mediante una función php. Lo que hago es subir una imagen mediante ...
  #1 (permalink)  
Antiguo 07/03/2006, 09:11
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
Problema con función para subir imágenes

Hola foreros!

Estoy creando un sistema de galería de imágenes subidas al servidor mediante una función php.

Lo que hago es subir una imagen mediante un campo File y manipularla a mi gusto. La función funciona perfectamente para este ejemplo:
$archivo=$_FILES["galeria1"]; //recojo la imagen en la variable $archivo
imagen($v1,$archivo,250,$file_name,$carpeta); //aplico la función a esa imagen.
Pero me falla en este caso:
$archivo=$_FILES["galeria1"]; //recojo el archivo en la variable $archivo
imagen($v1,$archivo,250,$file_name,$carpeta); //aplico la función a ese archivo.
thumbnail($v1,$archivo,100,$file_name,$carpeta);
Con la primera función modifico la imagen a un tamaño de 250 px de ancho, y con la segunda trato de crear un thumbnail de 100 px de ancho. Pero me dice que no encuentra la imagen temporal que se genera.

Supongo que será por que solo se puede recoger en $archivo una vez la imagen y luego se elimina una vez tratada.

¿Alguien le ha ocurrido algo parecido?

Gracias y un saludo!
  #2 (permalink)  
Antiguo 07/03/2006, 09:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Supongo que será por que solo se puede recoger en $archivo una vez la imagen y luego se elimina una vez tratada.
Si indicas el código de esas funciones sería lo ideal .. NO vemos si "destruyes" esa imagen .. o se creó como archivo y lo eliminastes o que ... Tampoco se vé como trabaja ese código para generar tus thumnails ..

Un saludo,
  #3 (permalink)  
Antiguo 07/03/2006, 09:24
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
Ok, esta es la función, el error me suele dar en la línea del
"$result = move_uploaded_file($temp_name, $file_path);"



function imagen($id,$foto,$coef_imagen,$nombre,$carpeta){

$upload_dir = "../../" . $carpeta . "/";
$dir_fisica= $carpeta . "/";

if($foto!="")
{
$temp_name = $foto['tmp_name'];
$file_name = $nombre;
$file_type = $foto['type'];
$file_size = $foto['size'];
$result = $foto['error'];
$file_path = $upload_dir.$file_name;


if($file_size>1024000)
{
$_SESSION['size_invalid']=true;
header("Location:../" . $localizacion);
exit;
}
elseif($file_size==0)
{

}
else
{
$result = move_uploaded_file($temp_name, $file_path);
list($ancho, $altura, $tipo, $attr) = getimagesize("/home/httpd/vhosts/nombredominio.com/httpdocs/" . $dir_fisica . "$file_name" );

if($ancho<=$coef_image)
{
$coef_image=$ancho;
}
$height=(($altura*$coef_imagen)/$ancho);

if ($tipo==2)
{
$ext=".jpg";
$abc = imagecreatefromjpeg("../../" . $dir_fisica . "$file_name");
$def = imagecreatetruecolor($coef_imagen, $height);

}
elseif ($tipo==1)
{
$ext=".gif";
$abc = imagecreatefromgif("../../" . $dir_fisica . "$file_name"); /
$def = imagecreate($coef_imagen, $height);
}
else
{
$_SESSION['img_invalid']=true;
header("Location:../" . $localizacion);
exit;
}

imagecopyresampled($def, $abc, 0, 0, 0, 0, $coef_imagen+5, $height+2, $ancho, $altura);

imagejpeg($def, $upload_dir . "/$file_name", 85);
}
}
  #4 (permalink)  
Antiguo 07/03/2006, 09:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y que error textual "suele dar"?

Debes indicar el código completo que usas .. tanto la definición de las funciones que describes como el código que las llama.

Recuerda indicar toda la información que dispones!!! .. Esto es como ir al "doctor" si uno no explica bien y dá toda la información no se puede emitir ningún tipo de diagnóstico ...

Un saludo,
  #5 (permalink)  
Antiguo 07/03/2006, 09:46
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
Ok, perdona.

Pues como decía al principio al ejecutar:

$archivo=$_FILES["galeria1"]; //recojo el archivo en la variable $archivo
imagen($v1,$archivo,250,$file_name,$carpeta); //aplico la función a ese archivo.
thumbnail($v1,$archivo,100,$file_name,$carpeta);

Las dos funciones imagen y thumbnail son básicamente iguales, sólo cambia la carpeta en la que se suben los archivos.
La función imagen la realiza bien, pero al intentar ejecutar la función thumbnail me devuelve este mensaje de error:

Warning: getimagesize(/home/httpd/vhosts/nombrededominio.com/httpdocs/ilustracion_vectorial/thumbs/lam4.jpg): failed to open stream: No such file or directory in /home/httpd/vhosts/nombrededominio.com/httpdocs/panel/scripts/img_functions.php on line 114
  #6 (permalink)  
Antiguo 07/03/2006, 10:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Warning: getimagesize(/home/httpd/vhosts/nombrededominio.com/httpdocs/ilustracion_vectorial/thumbs/lam4.jpg): failed to open stream: No such file or directory in /home/httpd/vhosts/nombrededominio.com/httpdocs/panel/scripts/img_functions.php on line 114

El error que describes dice que no está ese archivo en esa ruta o bien no tiene permisos PHP para accederlo (puede ser el directorio que no tenga permisos tipo: CMOD 0677 o superior ..)

Un saludo,
  #7 (permalink)  
Antiguo 07/03/2006, 10:09
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
Sí, ya sé que no está el archivo en esa ruta y la carpeta tienen todos los permisos.

El problema radica aquí:

$archivo=$_FILES["galeria1"]; //recojo el archivo en la variable $archivo

imagen($v1,$archivo,250,$file_name,$carpeta); //aplico la función a ese archivo.
thumbnail($v1,$archivo,100,$file_name,$carpeta);

Intento utilizar la variable $archivo en ambas funciones pero en la segunda función no me la coge bien siendo las dos funciones iguales. ¿Pierde $archivo su valor al haber sido utilizado en la primera función?
  #8 (permalink)  
Antiguo 07/03/2006, 10:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tu función imagen() mueve (move_uploade_file()) el archivo temporal que PHP procesa al subir tu imagen ..

Te recomendaría separar procesos .. Uno para procesar el upload de la imagen y otro para el proceso de la imagen (separado o no según tienes).

Podrías modificar tu función imagen() para que devuelva la ruta completa/nombre que quedó el archivo en destino $file_path y así tomarla en la otra función.

Un saludo,
  #9 (permalink)  
Antiguo 07/03/2006, 10:40
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
Buen idea Cluster, voy a probarlo.

Gracias y un saludo!
  #10 (permalink)  
Antiguo 07/03/2006, 12:10
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
Funciona perfectamente, le paso a la función thumbnail la ruta del archivo que he subido con la función imagen y la utiliza para crear el thumb.

Muchas gracias!!
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 16:46.