Foros del Web » Programando para Internet » PHP »

Error al subir fotos

Estas en el tema de Error al subir fotos en el foro de PHP en Foros del Web. Hola ^^ soy nueva aquí, he estado viendo el foro y me parece muy interesante. Tengo una duda en PHP a la hora de subir ...
  #1 (permalink)  
Antiguo 17/01/2012, 04:22
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Error al subir fotos

Hola ^^ soy nueva aquí, he estado viendo el foro y me parece muy interesante.

Tengo una duda en PHP a la hora de subir un anuncio con foto. Os pongo una imagen de error:

http://easycaptures.com/fs/uploaded/417/0776763232.png

A ver si me podeis decir el problema pleaaase

Decir que la web la estoy editando en modo local, pero cuando estaba subida funcionaba
  #2 (permalink)  
Antiguo 17/01/2012, 04:35
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Error al subir fotos

Los dos primeros se refieren a que la imagen que quieres mover no existe. Seguramente la ruta está mal.
El último error es una llamada a una función que no existe.

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 17/01/2012, 04:45
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error al subir fotos

Mmm, como soluciono lo primero? A que ruta te refieres?

Pongo las lineas de codigo del primer error: (el erro me lo marca en la linea que subraye y puse en negrita):

Código:
<?php
class Ficheros
{
	//METODOS STATICOS
	
	//Eliminar una imagen y sus thumbs
	static public function eliminarArchivos($rutas)
	{
		for ($i=0; $i<count($rutas); $i++)
		{
			if(file_exists($rutas[$i])) unlink($rutas[$i]);
		}
	}
	
	
	//Carga una imagen y su miniatura
	static public function cargaImagenes($mover_imagen,$ruta_destino,$ruta_thumb,$tipo_archivo,$tamano_archivo,$max_ancho_imx,$ancho_thumb,$alto_thumb,$crear_thumb)
	{
		//TIPOS DE ERRORES - [0] Exito - [1] Extension - [2] Tipo de imagen - [3] Datos de imagen - [4] Carga de imagen
		//Con strpos encontramos la posicion de una cadena en nuestro string
			if ( !( strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg") || strpos($tipo_archivo, "png")) && ($tamano_archivo < 1578300) ) {return 1; exit;}
			else
			{ 
				if (move_uploaded_file($mover_imagen, $ruta_destino))
				{
						chmod($ruta_destino, 0755 ); //Le damos permisos a la ruta de destino
						//Cojemos el ancho y el alto de la imagen
						
						if(@$datos_imagen=getimagesize($ruta_destino)) //Si consigue el ancho y el alto de la imagen
						{
								$ancho_imagen_original=$datos_imagen[0];
								$alto_imagen_original=$datos_imagen[1];
								$imagen_corregida=$ruta_destino;
								
								//Vemos que tipo de archivo es
									switch($tipo_archivo)
									{
											case "image/jpeg": if(!@$imagen_corregida=imagecreatefromjpeg($ruta_destino)){return 2; exit;} break;
											case "image/gif": if(!@$imagen_corregida=imagecreatefromgif($ruta_destino)){return 2; exit;} break;
											case "image/png": if(!@$imagen_corregida=imagecreatefrompng($ruta_destino)){return 2; exit;} break;
									}
							
								//CORRECCION DE IMAGEN - Si el ancho de la imagen sobrepasa el limite hay que reducirla.
									if($ancho_imagen_original>$max_ancho_imx)
									{
										//El alto a proporcion
											$alto_max_imx=round(($max_ancho_imx/$ancho_imagen_original)*$alto_imagen_original);
											
										//Creo una nueva imagen
											$imagen_nueva = imagecreatetruecolor($max_ancho_imx, $alto_max_imx);
											
										//Ahora sustituimos la imagen que sobrepasa el limite por la nueva
											imagecopyresampled($imagen_nueva, $imagen_corregida, 0, 0, 0, 0, $max_ancho_imx, $alto_max_imx, $ancho_imagen_original, $alto_imagen_original); 
											imagejpeg($imagen_nueva, $ruta_destino, 100);
									}
							
								//CREAR THUMBNAIL
									if($crear_thumb==1)
									{
									//El alto a proporcion
										$alto_imx_thumb=round(($ancho_thumb/$ancho_imagen_original)*$alto_imagen_original);
										$ancho_imx_thumb=$ancho_thumb;
									
										if($alto_imx_thumb<$alto_thumb)
										{
											$alto_imx_thumb=$alto_thumb;
											$ancho_imx_thumb=round(($alto_thumb/$alto_imagen_original)*$ancho_imagen_original);
										}
									
										//Creo una nueva imagen
											$imagen_thumb = imagecreatetruecolor($ancho_thumb, $alto_thumb);
									
										//Ahora sustituimos la imagen que sobrepasa el limite por la nueva
											imagecopyresampled($imagen_thumb, $imagen_corregida, 0, 0, 0, 0, $ancho_imx_thumb, $alto_imx_thumb, $ancho_imagen_original, $alto_imagen_original); 
											imagejpeg($imagen_thumb, $ruta_thumb, 100);
									}
						}
						else {return 3; exit;}
						return 0;	
				}
				else {return 4; exit;}
		}
	}
	
	//Cargar un archivo
	static public function subirArchivos($mover_archivo,$ruta_destino,$tipo_archivo,$tamano_archivo) 
	{
		//TIPOS DE ERRORES O CONFIRMACIONES - [0] Exito - [1] Extension - [2] Carga de archivo
		//Con strpos encontramos la posicion de una cadena en nuestro string
		if ( !( strpos($tipo_archivo, "pdf") || strpos($tipo_archivo, "msword") ) && ($tamano_archivo < 1578300) ) {return 1; exit;}
		else
		{ 
			if (move_uploaded_file($mover_archivo, $ruta_destino))
			{
				chmod($ruta_destino, 0755 ); //Le damos permisos a la ruta de destino
				return 0;	
			}
			else {return 2; exit;}
		}
	}
	
	
}

Última edición por silvia_net; 17/01/2012 a las 04:53
  #4 (permalink)  
Antiguo 17/01/2012, 05:45
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Error al subir fotos

CUando subes un archivo, este se copia en una carpeta temporal con un nombre temporal.
A continuación, este archivo temporal se mueve y se renombra con la función que te está dando error. Te da un error porque no encuentra el archivo temporal. Puede ser que no exista, que lo hayas borrado, o que estés pasando mal el nombre a la función. Para saber qué está pasando, utiliza el siguiente código:


Código PHP:
Ver original
  1. <?php
  2. ini_set("display_errors", 1);
  3. echo "<pre>";
  4. class Ficheros
  5. {
  6.     //METODOS STATICOS
  7.  
  8.     //Eliminar una imagen y sus thumbs
  9.     static public function eliminarArchivos($rutas)
  10.     {
  11.         for ($i=0; $i<count($rutas); $i++)
  12.         {
  13.             if(file_exists($rutas[$i])) unlink($rutas[$i]);
  14.         }
  15.     }
  16.  
  17.  
  18.     //Carga una imagen y su miniatura
  19.     static public function cargaImagenes($mover_imagen,$ruta_destino,$ruta_thumb,$tipo_archivo,$tamano_archivo,$max_ancho_imx,$ancho_thumb,$alto_thumb,$crear_thumb)
  20.     {
  21.         print_r(func_get_args());
  22.        
  23.         //TIPOS DE ERRORES - [0] Exito - [1] Extension - [2] Tipo de imagen - [3] Datos de imagen - [4] Carga de imagen
  24.         //Con strpos encontramos la posicion de una cadena en nuestro string
  25.         if ( !( strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg") || strpos($tipo_archivo, "png")) && ($tamano_archivo < 1578300) ) {return 1; exit;}
  26.         else
  27.         {
  28.             echo "<h1>move_uploaded_file($mover_imagen, $ruta_destino)</h1>";
  29.             if (move_uploaded_file($mover_imagen, $ruta_destino))
  30.             {
  31.                 chmod($ruta_destino, 0755 ); //Le damos permisos a la ruta de destino
  32.                 //Cojemos el ancho y el alto de la imagen
  33.  
  34.                 if(@$datos_imagen=getimagesize($ruta_destino)) //Si consigue el ancho y el alto de la imagen
  35.                 {
  36.                     $ancho_imagen_original=$datos_imagen[0];
  37.                     $alto_imagen_original=$datos_imagen[1];
  38.                     $imagen_corregida=$ruta_destino;
  39.  
  40.                     //Vemos que tipo de archivo es
  41.                     switch($tipo_archivo)
  42.                     {
  43.                         case "image/jpeg": if(!@$imagen_corregida=imagecreatefromjpeg($ruta_destino)){return 2; exit;} break;
  44.                         case "image/gif": if(!@$imagen_corregida=imagecreatefromgif($ruta_destino)){return 2; exit;} break;
  45.                         case "image/png": if(!@$imagen_corregida=imagecreatefrompng($ruta_destino)){return 2; exit;} break;
  46.                     }
  47.                        
  48.                     //CORRECCION DE IMAGEN - Si el ancho de la imagen sobrepasa el limite hay que reducirla.
  49.                     if($ancho_imagen_original>$max_ancho_imx)
  50.                     {
  51.                         //El alto a proporcion
  52.                         $alto_max_imx=round(($max_ancho_imx/$ancho_imagen_original)*$alto_imagen_original);
  53.                            
  54.                         //Creo una nueva imagen
  55.                         $imagen_nueva = imagecreatetruecolor($max_ancho_imx, $alto_max_imx);
  56.                            
  57.                         //Ahora sustituimos la imagen que sobrepasa el limite por la nueva
  58.                         imagecopyresampled($imagen_nueva, $imagen_corregida, 0, 0, 0, 0, $max_ancho_imx, $alto_max_imx, $ancho_imagen_original, $alto_imagen_original);
  59.                         imagejpeg($imagen_nueva, $ruta_destino, 100);
  60.                     }
  61.                        
  62.                     //CREAR THUMBNAIL
  63.                     if($crear_thumb==1)
  64.                     {
  65.                         //El alto a proporcion
  66.                         $alto_imx_thumb=round(($ancho_thumb/$ancho_imagen_original)*$alto_imagen_original);
  67.                         $ancho_imx_thumb=$ancho_thumb;
  68.                            
  69.                         if($alto_imx_thumb<$alto_thumb)
  70.                         {
  71.                             $alto_imx_thumb=$alto_thumb;
  72.                             $ancho_imx_thumb=round(($alto_thumb/$alto_imagen_original)*$ancho_imagen_original);
  73.                         }
  74.                            
  75.                         //Creo una nueva imagen
  76.                         $imagen_thumb = imagecreatetruecolor($ancho_thumb, $alto_thumb);
  77.                            
  78.                         //Ahora sustituimos la imagen que sobrepasa el limite por la nueva
  79.                         imagecopyresampled($imagen_thumb, $imagen_corregida, 0, 0, 0, 0, $ancho_imx_thumb, $alto_imx_thumb, $ancho_imagen_original, $alto_imagen_original);
  80.                         imagejpeg($imagen_thumb, $ruta_thumb, 100);
  81.                     }
  82.                 }
  83.                 else {return 3; exit;}
  84.                 return 0;
  85.             }
  86.             else {return 4; exit;}
  87.         }
  88.     }
  89.  
  90.     //Cargar un archivo
  91.     static public function subirArchivos($mover_archivo,$ruta_destino,$tipo_archivo,$tamano_archivo)
  92.     {
  93.         //TIPOS DE ERRORES O CONFIRMACIONES - [0] Exito - [1] Extension - [2] Carga de archivo
  94.         //Con strpos encontramos la posicion de una cadena en nuestro string
  95.         if ( !( strpos($tipo_archivo, "pdf") || strpos($tipo_archivo, "msword") ) && ($tamano_archivo < 1578300) ) {return 1; exit;}
  96.         else
  97.         {
  98.             if (move_uploaded_file($mover_archivo, $ruta_destino))
  99.             {
  100.                 chmod($ruta_destino, 0755 ); //Le damos permisos a la ruta de destino
  101.                 return 0;
  102.             }
  103.             else {return 2; exit;}
  104.         }
  105.     }
  106.  
  107.  
  108. }
  109. echo "</pre>";

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 17/01/2012, 06:04
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error al subir fotos

He puesto el codigo como dices y ahora me sale el mismo error mas esto:
move_uploaded_file(C:\wamp\tmp\phpA476.tmp, C:/wamp/www//portal/images/anuncios/general/153_camión.jpg)

Puede ser que este todo configurado para que funcione en el hosting, pero que en modo local de fallo? Porque si es asi me despreocupo

Gracias ;)
  #6 (permalink)  
Antiguo 17/01/2012, 06:21
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Error al subir fotos

El archivo temporal se guarda en:

move_uploaded_file(C:\wamp\tmp\phpA476.tmp, C:/wamp/www//portal/images/anuncios/general/153_camión.jpg)

Y el archivo definitivo se guarda en:

move_uploaded_file(C:\wamp\tmp\phpA476.tmp, C:/wamp/www//portal/images/anuncios/general/153_camión.jpg)

Comprueba que las dos carpetas existan. No conozco Windows pero comprueba esta ruta:

C:/wamp/www//portal/images/anuncios/general/153_camión.jpg

tiene dos barras, casi seguro que está mal.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #7 (permalink)  
Antiguo 17/01/2012, 06:40
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error al subir fotos

Creo que esa ruta esta definida en

Código PHP:
//Rutas de destino
    
$ruta1=RUTA_SERVIDOR_IMG."/source/images/original/";
    
$ruta2=RUTA_SERVIDOR_IMG."/source/images/65x65/";
    
$ruta3=RUTA_SERVIDOR_IMG."/source/files/"
Que ves mal? :S

A lo mejor no esta definida ahi y me estoy liando....

EDITO,

perdon creo que esta definida aki:

Código PHP:
$ruta1=$_SERVER['DOCUMENT_ROOT'].RUTA_IMAGES."images/anuncios/general/"
  #8 (permalink)  
Antiguo 17/01/2012, 06:53
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Error al subir fotos

Te sobra una barra, comprueba el valor de las variables y eliminala:

echo $_SERVER['DOCUMENT_ROOT'];
echo RUTA_IMAGES;

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #9 (permalink)  
Antiguo 17/01/2012, 07:15
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error al subir fotos

Cita:
Iniciado por repara2 Ver Mensaje
Te sobra una barra, comprueba el valor de las variables y eliminala:

echo $_SERVER['DOCUMENT_ROOT'];
echo RUTA_IMAGES;

Salu2
Donde me sobra la barra? :S

esta es la ruta que me sale al poner eso:
C:/wamp/www/RUTA_IMAGES

(Perdon por ser tan inutil u.u)
  #10 (permalink)  
Antiguo 17/01/2012, 07:25
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error al subir fotos

Tengo otras dos lineas asi:

Código PHP:
define('RUTA_SERVIDOR''http://localhost/portal');
define('RUTA_IMAGES''/portal/'); 
No se si sobra la / de portal. El caso es que yo no tengo ninguna carpeta llamada portal :|

Última edición por silvia_net; 17/01/2012 a las 08:24
  #11 (permalink)  
Antiguo 17/01/2012, 10:46
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: Error al subir fotos

bueno acabo de hacer una solucion a un usuario de un problema similar :P aqui te paso el proyecto que le diseñe y bueno modificalo como gustes funciona al 100%


http://www.enigmads.com/prueba.zip


hay tiene capturas funciones codigos esta todo incluido hasta las instrucciones
  #12 (permalink)  
Antiguo 17/01/2012, 10:49
Avatar de silvia_net  
Fecha de Ingreso: enero-2012
Mensajes: 31
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error al subir fotos

oki le echare un vistazo, gracias jmabreu! ^^

Etiquetas: fotos
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 21:14.