Foros del Web » Programando para Internet » PHP »

Problema con upload de imágenes

Estas en el tema de Problema con upload de imágenes en el foro de PHP en Foros del Web. Tengo un problema quiero que la gente subauna imagen amiweb y no me sale he usado estecódigo Código: <? include ("conexion.php"); $$Referencia=$_POST["Referencia"]; $sql = "SELECT ...
  #1 (permalink)  
Antiguo 30/04/2005, 03:05
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
Problema con upload de imágenes

Tengo un problema quiero que la gente subauna imagen amiweb y no me sale he usado estecódigo

Código:
<?
  include ("conexion.php");
		
		$$Referencia=$_POST["Referencia"];
		
		$sql = "SELECT * FROM propiedades WHERE Referencia='$Referencia'";
		$result= mysql_query ($sql, $conexion);
		$row=mysql_fetch_array($result);
		echo "<input type='hidden' value='$row[Referencia]'name='Referencia'>";
		
		$nombre_archivo = $HTTP_POST_FILES['Foto']['name'];
		 $tipo_archivo = $HTTP_POST_FILES['Foto']['type']; 
        $tamano_archivo = $HTTP_POST_FILES['Foto']['size'];  
	if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) { 
    echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>"; 
}else{ 

    if (move_uploaded_file($HTTP_POST_FILES['Foto']['tmp_name'],"/cibergen/public_html/prueba/fotos/$nombre_archivo ")){ 
       echo "El archivo ha sido cargado correctamente."; 
    }else{ 
       echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; 
    }
	 }
 $Foto= "www.prueba.cibergenesis.com/fotos/$nombre_archivo";
 
 $sqlquery= "UPDATE propiedades SET  Foto='$Foto' WHERE Referencia='$Referencia'";
	$result = mysql_query ($sqlquery);
		?>
y me sale un error:

Warning: copy(/home/cibergen/public_html/prueba/diego.jpg): failed to open stream: Permission denied in /home/cibergen/public_html/prueba/inserfoto2.php on line 26


tengo los permisos ya que mediante dreamweaver puedo subirlos lo que nose es comousando el código para que alguien através de un formulario pueda incluir una foto, por ejemplo en mi web,lei que podíahacerlo con el código que puse antes pero meda el error que ya comente.

Indagandomás he visto que se puede conectar con esto:
Código:
$archivo_remoto = "archivo remoto"; 

$id_ftp= ftp_connect("localhost") or die ("no se pudo conectar al servidor"); //Obtiene un manejador del Servidor FTP 
$user = "user"; 
$pass= "password"; 
ftp_login($id_ftp, $user, $pass); //Se loguea al Servidor FTP 
ftp_pasv($id_ftp, true); //Establece el modo de conexión 
return $id_ftp; //Devuelve el manejador a la función 
ftp_put($id_ftp, $archivo_remoto, $archivo_local); 
//Sube un archivo al Servidor FTP en modo Binario 
ftp_quit($id_ftp);//Cierra la conexion FTP
Así que si alguien tiene alguna idea de que puedo hacer os agradecería muchísimo porque nose como usarlo
  #2 (permalink)  
Antiguo 30/04/2005, 03:30
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
se ve mejor el código si lo pones entre etiquetas [ PHP] ó usa el botón respectivo del editor... y por favor ayudanos.. ¿cuál es la línea 26 (donde tienes el error, pues el mensaje así te lo dice) de tu código?....
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 30/04/2005, 04:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
Código PHP:
<?
  
include ("conexion.php");
        
        $
$Referencia=$_POST["Referencia"];
        
        
$sql "SELECT * FROM propiedades WHERE Referencia='$Referencia'";
        
$resultmysql_query ($sql$conexion);
        
$row=mysql_fetch_array($result);
        echo 
"<input type='hidden' value='$row[Referencia]'name='Referencia'>";
        
        
$nombre_archivo $HTTP_POST_FILES['Foto']['name'];
         
$tipo_archivo $HTTP_POST_FILES['Foto']['type']; 
        
$tamano_archivo $HTTP_POST_FILES['Foto']['size'];  
    if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 100000))) { 
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>"
}else{ 

    if (
move_uploaded_file($HTTP_POST_FILES['Foto']['tmp_name'],"/cibergen/public_html/prueba/fotos/$nombre_archivo ")){ 
       echo 
"El archivo ha sido cargado correctamente."
    }else{ 
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
    }
     }
 
$Foto"www.prueba.cibergenesis.com/fotos/$nombre_archivo";
 
 
$sqlquery"UPDATE propiedades SET  Foto='$Foto' WHERE Referencia='$Referencia'";
    
$result mysql_query ($sqlquery);
        
?>
la linea 26 es

Código PHP:
if (move_uploaded_file($HTTP_POST_FILES['Foto']['tmp_name'],"/cibergen/public_html/prueba/fotos/$nombre_archivo ")){ 
  #4 (permalink)  
Antiguo 30/04/2005, 05:03
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
Mucho mejor... (pudiste editar el mensaje original para no desperdiciar espacio )...

Ya!, quizá intentas mover un archivo que aún no subes... antes haz un is_uploaded_file(); www.php.net/is_uploaded_file

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 30/04/2005, 05:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
gracias voy a probarlo
  #6 (permalink)  
Antiguo 02/05/2005, 02:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
no me saaaaale

Ahora me sale este error

Warning: copy(home/cibergen/prueba/foto/diego.jpg): failed to open stream: No such file or directory in /home/cibergen/public_html/prueba/inserfoto2.php on line 33

Código PHP:
<?
  
include ("conexion.php");
        
        
$Referencia=$_POST["Referencia"];
        
        
$sql "SELECT * FROM propiedades WHERE referencia='".$Referencia."'" or die ("no se selecciono labase de datos");
        
$resultmysql_query ($sql$conexion);
        
$row=mysql_fetch_array($result);
        echo 
"<input type='hidden' value='$row[referencia]'name='Referencia'>";
        
        
$nombre_archivo $HTTP_POST_FILES['Foto']['name'];
         
$tipo_archivo $HTTP_POST_FILES['Foto']['type']; 
        
$tamano_archivo $HTTP_POST_FILES['Foto']['size'];
        
$archivo_temporal =  $HTTP_POST_FILES['Foto']['tmp_name'];
        
$dir"home/cibergen/prueba/foto/$nombre_archivo";
        
    if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 100000))) 
    { 
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
    } 
else

if (
is_uploaded_file ($archivo_temporal))
{
   
copy ($archivo_temporal$dir);
}
    else
    { 
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
    }
    
     }
 
$Foto"http://www.prueba.cibergenesis.com/fotos/$nombre_archivo";
 
 
$sqlquery"UPDATE propiedades SET  foto='$Foto' WHERE referencia='$Referencia'";
    
$result mysql_query ($sqlquery);
        
?>
en la línea 33 esta el siguiente código
Código PHP:
copy ($archivo_temporal$dir); 
muchas gracias por vuestra ayuda
  #7 (permalink)  
Antiguo 02/05/2005, 04:10
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
Okkk... primero no ocupes copy() sino move_uploaded_file() como lo tenias a el inicio... también veo un error... el "or die" no bede de ir después de la query (como lo tienes ahora formaría parte de), sino después de la función, de esta forma:
Código PHP:
$algomysql_query("SELECT ...") or die (mysql_error()); 
... para imprimir un elemento de una matríz hazlo de la forma $algo['indice']... osease con comillas.. eso lo menciono porque no lo haces en esta línea:
Código PHP:
echo "<input type='hidden' value='$row[referencia]'name='Referencia'>"
Ve el código fuente para ver exactamente qué resultado trae esto... igua te recomendaria siempre escapar comillas con barra invertida (no imprimir sencillas como lo tienes):
Código PHP:
echo "<input type=\"algo\"...>"
Igual no veo definida $Foto que ocupas al final para actualizar....

Espero tengas buenos resultados.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 02/05/2005, 04:11
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
Agrego: Asegurate que tu(s) carpeta(s) existan..
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 03/05/2005, 10:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
gracias


graciasssssssss muy amable me voy rapido a probarlo es que ando másperdida... lode la barra invertida me aconsejaronno usarlas
  #10 (permalink)  
Antiguo 03/05/2005, 10:38
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
hola perdon por la molestia, he corregido todo lo que me habeis apuntado,pero me da este error:

Warning: move_uploaded_file(cibergen/public_html/prueba/fotos/diego.jpg): failed to open stream: No such file or directory in /home/cibergen/public_html/prueba/inserfoto2.php on line 34

por lo que me imagino que quizas es un error en la carpeta pero al no especificar una ruta (o sea que laguarde por defecto)
me da este error:

Warning: Wrong parameter count for move_uploaded_file() in /home/cibergen/public_html/prueba/inserfoto2.php on line 34

en esa línea tengo:

Código PHP:
 move_uploaded_file($HTTP_POST_FILES['Foto']['tmp_name'], "public_html/prueba/fotos/$nombre_archivo"); 
  #11 (permalink)  
Antiguo 03/05/2005, 11:45
Avatar de isaacluz  
Fecha de Ingreso: marzo-2005
Mensajes: 180
Antigüedad: 19 años, 1 mes
Puntos: 0
Prueba con este... A mi me funciona muy bien
Código PHP:
<?
if ($Guardar){
    
$Ruta "";
    
// SI HEMOS ENVIADO UNA IMAGEN LA GUARDAMOS
    
if(is_uploaded_file($_FILES['Imagen']['tmp_name'])){
            
// OBTENEMOS EL NOMBRE DEL ARCHIVO
            
$Nombre=$_FILES['Imagen']['name'];
            
// LE QUITAMOS CARACTERES ESPECIALES AL NOMBRE Y SUSTITUIMOS CON _
            
$Nombre=preg_replace("/[\s!\"á#$\%&\/\|\\\*\+]/""_"$Nombre);
        
// SI EL ARCHIVO YA EXISTE LE PONEMOS UN NUMERO AL FINAL PA QUE SE DIFERENCIEN
            
while(file_exists("$Ruta$Nombre")){
         
$Nombre=substr($Nombre0strrpos($Nombre'.')>0?strrpos($Nombre'.'):strlen($Nombre)).".1".strrchr($Nombre'.');
            }
            
// MOVEMOS EL ARCHIVO AL DIRECTORIO
            
copy ("$Imagen""$Ruta$Nombre") or die ("no se pudo subir el archivo");
    }
}
?>
<form method="post"  action="" enctype="multipart/form-data">
<input name="Imagen" type="file" class="Input" size="10" >
<input name="Guardar" type="submit" value="Guardar">
</form>
  #12 (permalink)  
Antiguo 03/05/2005, 14:49
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
mil gracias! voy a probarlo

mil gracias! voy a probarlo
  #13 (permalink)  
Antiguo 03/05/2005, 20:19
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
.. pués según el mensaje de error.. no encuentra la carpeta ó archivo... Seguro que la carpeta existe???.. . la va a buscar a partir de donde se ejecuta tu script...

Capeta_donde_ejecuto_mi_script_actual/cibergen/public_html/prueba/fotos/

Perdón por volver a repetirlo... pero... no se me ocurre otra cosa... :pesnado:...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 05/05/2005, 03:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
Mil gracias a ambos por responder, pero no funciona,intentare con:
Código PHP:

include ("conexion.php");
          
        
$Referencia=$_POST["Referencia"];
        
        
$sql "SELECT * FROM propiedades WHERE referencia='".$Referencia."'";
        
$resultmysql_query ($sql$conexion);
        
$row=mysql_fetch_array($result);
        echo 
"<input type=\"hidden\" value='".$row["referencia"]."' name=\"Referencia\">";
        
        
$nombre_archivo $HTTP_POST_FILES['Foto']['name'];
         
$tipo_archivo $HTTP_POST_FILES['Foto']['type']; 
        
$tamano_archivo $HTTP_POST_FILES['Foto']['size'];
        
$archivo_temporal =  $HTTP_POST_FILES['Foto']['tmp_name'];
        
$archivo_remoto "/fotos/$nombre_archivo";
        
        
$id_ftpftp_connect("localhost") or die (mysql_error ("no se pudo conectar al servidor")); //Obtiene un manejador del Servidor FTP
        
$user "usuario";
        
$pass"contraseña"
         
ftp_login($id_ftp$user$pass); //Se loguea al Servidor FTP
         
ftp_pasv($id_ftptrue); //Establece el modo de conexión
         
return $id_ftp//Devuelve el manejador a la función
          
        
    
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 100000))) { 
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>"
}
else

ftp_putint ftp_streamstring remote_filestring local_fileint mode)
          
//Sube un archivo al Servidor FTP en modo Binario
    
ftp_quit($id_ftp);//Cierra la conexion FTP
  
    
     
}
 
        
?> 
si ya no sale con esto creo que desisto
  #15 (permalink)  
Antiguo 05/05/2005, 07:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La carpeta (directorio) de destino:
cibergen/public_html/prueba/fotos/diego.jpg

debe tener permisos de escritura (chmod a 066 o 077)

Usa tu primer ejemplo .. pero no con copy() sino con move_uploaded_file() y ajusta:
$dir= "home/cibergen/prueba/foto/$nombre_archivo";
debe ser:
$dir= "/home/cibergen/prueba/foto/$nombre_archivo";
(supongo que esa es la ruta completa desde el raiz de ese servidor?)

y ese directorio (prueba/) debe tener permisos de escritura ..

Un saludo,
  #16 (permalink)  
Antiguo 05/05/2005, 10:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
Si es la ruta completa, lo que nose porque pasa es cuando subo imágenes desde un gestor ftp a esa carpeta me va genial pero como necesito que alguin la suba de la página debo hacer lo que he estado poniendo en mi código, pero sale el error, ahora estoy hablando con mi hosting para verificar los permisos desde ya muchas gracias y disculpad las molestias os tendré informados
  #17 (permalink)  
Antiguo 05/05/2005, 11:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Los permisos de ese directorio los puedes ajustar tu mismo con tu cliente de FTP y función CHMOD .. ajustandolo a 0666 o 0777 ... (lo has revisado ya?)

Un saludo,
  #18 (permalink)  
Antiguo 05/05/2005, 11:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
eso nose como hacerlo, si me indicas... o medices de donde puedo leerlo o alguna pista teagradecería muchísimo
  #19 (permalink)  
Antiguo 05/05/2005, 12:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
¿Como subes tus archivos a tu servidor? .. lo haces por FTP? .. por algún panel de control? .. Bueno en cualquier caso busca en ellos la función "CHMOD" o bien "cambiar permisos de archivos" (si usas Dreamweaver . .buscate otro cliente de FTP)

Un saludo,
  #20 (permalink)  
Antiguo 06/05/2005, 04:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
si uso dreamweaber,gracias buscaré otro gestor ftp
  #21 (permalink)  
Antiguo 06/05/2005, 08:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas Windows .. podrías usar cuteFTP (www.cuteftp.com) .. ese por lo menos dispone de la funcionalidad "CHMOD" que necesitas usar en tu caso.

Un saludo,
  #22 (permalink)  
Antiguo 07/05/2005, 03:45
 
Fecha de Ingreso: marzo-2005
Mensajes: 24
Antigüedad: 19 años
Puntos: 0
mil gracias!!!!!yaesta todo ok es que la primera vez que hago un update de archivos y siempre usé para las páginas el dreamweaver. Con elcute ftp pude otorgar perfectamente todos los permisos

De nuevo gracias a TODOS!!!!
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 07:09.