Foros del Web » Programando para Internet » PHP »

Subir imagenes al servidor... no funciona

Estas en el tema de Subir imagenes al servidor... no funciona en el foro de PHP en Foros del Web. Hola a todos Tengo el siguiente código para subir imagenes al servidor, pero no consigo que funcione... no se si será por problemas de privilegios ...
  #1 (permalink)  
Antiguo 18/04/2006, 04:14
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 10 meses
Puntos: 1
Subir imagenes al servidor... no funciona

Hola a todos

Tengo el siguiente código para subir imagenes al servidor, pero no consigo que funcione... no se si será por problemas de privilegios (creo que no pero no estoy seguro)

Código:
$dir="../imagenes/";
$carpeta="fondos2";

//SI NO EXISTEN VARIABLE PASADOS POR EL FORMULARIO, ES LA PRIMERA VEZ QUE SE MUESTRA LA PAGINA
if(!isset($_POST['enviar'])) {
	
	echo "<form name='sube_imagen' method='post' action='".$PHP_SELF."'>\n
			<select name='seccion'>\n
			<option value='1'>Home</option>\n
			<option value='2'>Sobre mi</option>\n
			<option value='2'>Contacto</option>\n			
			</select>\n
			<p>&nbsp;</p>\n
			<p>Imagen en español:<input type='file' name='imagen_es'></p>\n
			<p>Imagen en inglés:&nbsp;&nbsp;&nbsp;<input type='file' name='imagen_en'></p>\n
			<p><input type='Submit' value='Enviar' name='enviar'></p>\n";
		
		} // fin isset
			
			else {
			$seccion =$_POST["seccion"];			
			$img_es = $_FILES['imagen_es']['name'];
			$img_en = $_FILES['imagen_en']['name'];		
			
			
			if($_POST["enviar"]) {
if (is_uploaded_file($HTTP_POST_FILES['imagen_es']['tmp_name'])) {
copy($HTTP_POST_FILES['imagen_es']['tmp_name'], $dir.$carpeta.$img_es);
chmod($dir.$carpeta, 777);
$subio = true;
 }
}

			
			if($subio=TRUE) {
			echo "Las imagenes se han subido correctamente"; } else {echo "No se han podido guardar las imagenes correctamente.";}
			
		echo"<p><a href='javascript:history.go(-1)'>Volver</a></p>\n";
			
			 }

Podéis echarme una mano??
  #2 (permalink)  
Antiguo 18/04/2006, 04:35
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
no se si servira, pero prueba a cambiar $HTTP_POST_FILES por $_FILES

Respecto a lo de permisos, si tu hosting es linux, si deberias poder cambiar estos, eso si solo una cosa, cambia los permisos antes de enviar el archivo, no despues, tienes:
Código PHP:
copy($HTTP_POST_FILES['imagen_es']['tmp_name'],$dir.$carpeta.$img_es);
chmod($dir.$carpeta777); 
y deberia ser
Código PHP:
chmod($dir.$carpeta,777);
copy($_FILES['imagen_es']['tmp_name'],$dir.$carpeta."/".$img_es); 
Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #3 (permalink)  
Antiguo 18/04/2006, 05:10
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 20 años, 10 meses
Puntos: 1
Hice los cambios pero no funciona.

Me dice que la foto se ha subido correctamente, pero en el servidor no hay nada.

No me aparece ningun error...
  #4 (permalink)  
Antiguo 18/04/2006, 05:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
- Te falta el enctype="multipart/form-data" del form
- Utiliza $_SERVER['PHP_SELF']
- Ocupa move_uploaded_file()...
- no uses chmod() a menos que lo necesites (cambia los permisos por FTP) y en todo caso... creo debería ocuparse antes de mover el fichero

Reviza las FAQ: http://www.forosdelweb.com/showpost....9&postcount=12

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 18/04/2006, 05:33
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
A ver, acabo de probar el script, y la verdad, tiene un par de errores en el HTML, veras, el form, no esta cerrado, y ademas no se declara el enctype, al final el codigo completo seria:
Código PHP:
$dir="../imagenes/";
$carpeta="fondos2";

//SI NO EXISTEN VARIABLE PASADOS POR EL FORMULARIO, ES LA PRIMERA VEZ QUE SE MUESTRA LA PAGINA
if(!isset($_POST['enviar'])) {
    
    echo 
"<form enctype='multipart/form-data'  name='sube_imagen' method='post' action='".$PHP_SELF."'>\n
            <select name='seccion'>\n
            <option value='1'>Home</option>\n
            <option value='2'>Sobre mi</option>\n
            <option value='2'>Contacto</option>\n            
            </select>\n
            <p>&nbsp;</p>\n
            <p>Imagen en español:<input type='file' name='imagen_es'></p>\n
            <p>Imagen en inglés:&nbsp;&nbsp;&nbsp;<input type='file' name='imagen_en'></p>\n
            <p><input type='Submit' value='Enviar' name='enviar'></p></form>\n"
;
        
// fin isset
            
else {
    
$seccion =$_POST["seccion"];            
    
$img_es $_FILES['imagen_es']['name'];
    
$img_en $_FILES['imagen_en']['name'];    
    echo 
"j".$img_es;    
    if(
$_POST["enviar"]) {
        if (
is_uploaded_file($_FILES['imagen_es']['tmp_name'])) {
              
chmod($dir.$carpeta777);
            
move_uploaded_file($_FILES['imagen_es']['tmp_name'], $dir.$carpeta."/".$img_es);
            
$subio true;
         }
    }
    if(
$subio=TRUE) {
        echo 
"Las imagenes se han subido correctamente"; } else {echo "No se han podido guardar las imagenes correctamente.";
    }
    echo
"<p><a href='javascript:history.go(-1)'>Volver</a></p>\n";
            

Este funciona(al menos en mi equipo).

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #6 (permalink)  
Antiguo 18/04/2006, 05:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Un comentario:
Código PHP:
            move_uploaded_file($_FILES['imagen_es']['tmp_name'], $dir.$carpeta."/".$img_es);
            
$subio true
... Así $subió siempre será true aunque el archivo no haya subido; haces una asignación directa, no asociada al evento... la función no "corta" el script como para impedirdo, pero sí devuelve true si realizó su trabajo ... correcto sería:
- if(move_uploaded_....

ó, en su defecto:
- $subio=move_uploaded_... / if($subio...

.. ah!, y usa $PHP_SELF es obsoleto, usa $_SEVER .

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 18/04/2006, 07:18
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Cita:
Iniciado por jam1138
Un comentario:
Código PHP:
            move_uploaded_file($_FILES['imagen_es']['tmp_name'], $dir.$carpeta."/".$img_es);
            
$subio true
... Así $subió siempre será true aunque el archivo no haya subido; haces una asignación directa, no asociada al evento... la función no "corta" el script como para impedirdo, pero sí devuelve true si realizó su trabajo ... correcto sería:
- if(move_uploaded_....

ó, en su defecto:
- $subio=move_uploaded_... / if($subio...

.. ah!, y usa $PHP_SELF es obsoleto, usa $_SEVER .

Tienes toda la razon , culpa mia, es que esto de estar haciendo varias cosas a la vez provoca estos fallos.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
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 14:28.