Foros del Web » Programando para Internet » PHP »

Ayuda ftp php

Estas en el tema de Ayuda ftp php en el foro de PHP en Foros del Web. Ola a todos Queria preguntar una duda sobre el ftp en php. Haber yo ya tengo creada el formulario (en html) que se supone que ...
  #1 (permalink)  
Antiguo 15/04/2007, 14:18
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
Exclamación Ayuda ftp php

Ola a todos

Queria preguntar una duda sobre el ftp en php. Haber yo ya tengo creada el formulario (en html) que se supone que le envia los datos (en este caso archivo, por que es un ftp)a la página php para que suba, en este , caso 1 archivo.

En el formulario he puesto lo siguiente
Código HTML:
<form id="enviadorftp"name="enviadorftp" method="get" action="recibe.php" enctype="multipart/form-data">
<font face="comic sans ms" color="black"><b><u>Elija el video</u></b></font>
<br><br>
<input type="file" name="arch" id="arch"><br><br>
<br>
<input type="submit" value="Enviar">
<input type="reset" value="borrar todo">
</form> 

Y como veis quiero mandar los datos (o archivo xq es ftp) a la página en php "recibe.php"

Que sería así

Código HTML:
<?php
	//Creamos un identificador de conexión para identificar la conexion con nuestro servidor
	$id = ftp_connect("192.168.1.2");
	
	//Login con nuestro usuario y contraseña
	$login = ftp_login($id, "usuario","yuna");
	
	// Comprobamos que se creo el Id de conexión y se pudo hacer el login
	if ((!$id) || (!$login)) 
	{
		echo "Fallo en la conexión"; die;
	} 
	else 
	{
		echo "Conectado.";
	}
	
	
	//Cambiamos a modo pasivo,de esta manera le decimos al 
	//servidor que seremos nosotros quienes enviaremos los datos.
	if (ftp_pasv ($id, true))
	{
	echo "<br> Cambio a modo pasivo<br />";
  }
  else
  {
  	echo "no cambio al modo pasivo";
  }
  
	// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
	// En mi caso uso un directorio llamado boca
	
	/*if(ftp_chdir($id,"F:\programas proyecto\wamp\www\videos\usuario"))
	{
	echo "Cambiado al directorio necesario<br>";   
  }
  else
  {
  echo "no se ha cambiado al directorio elegido<br>";
  }*/
	
	// Cogemos el nombre del archivo a transmitir,en vez de usar $_POST, usamos $_FILES que le indica a PHP
	// Que estamos transmitiendo un archivo,el segundo argumento de la matriz, indica
	// el nombre del archivo
	$local= $_FILES[arch]['name'];
  echo $local;
	
	// Este es el nombre temporal del archivo mientras dura la transmisión
 $remoto="F:\programas proyecto\wamp\www\videos\usuario".$_FILES[arch]['tmp_name'];

 ftp_put($id,$remoto,$local,FTP_BINARY);
	
	echo "subiendo el archivo...<br>";
	
	// Juntamos la ruta del servidor con el nombre real del archivo
	$ruta = "F:\programas proyecto\wamp\www\videos\usuario".$local;
	
  // Verificamos si ya se subio el archivo temporal
		
	if (is_uploaded_file($remoto))
	{
	// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
	copy($remoto, $ruta);		
	echo "se ha subido";
  }
	// Sino se pudo subir el temporal
	else 
	{
	echo "no se pudo subir el archivo :".$local."<br>";
	}
		
	echo "Ruta-->".$ruta;
	
	//cerramos la conexión FTP
ftp_close($id);
?> 
En la parte donde pone $_FILES[arch]['name] y $_FILES[arch]['temp_name'] se supone que se especifíca que Archivo quiero subir,pues bien despues escribo un ECHO para ver si me a elegido el video correctamente, pero cuando lo ejecuto, no me sale nada, además me sale que no puedo subir el vídeo y he probado con todo, e incluso en poner algunas cosas en comentarios por si acaso el problema estaba ahí...Pero nada, sigo sin saber por que no me sube, nada, o por lo menos por que no me elige correctamente el vídeo.

¿Por que podría ser?
De servidor FTP uso el server-u.
¿Acaso podria ser que no haya configurado bien algo (tanto el server-u como alguna otra cosa de php, etc) y por eso no me eliga bien el vídeo?
En caso de ser eso...¿Podría alguien explicarme como hacer para poder subir el vídeo correctamente?

Por favor necesito ayuda...Esto que estoy realizando es urgente, por favor ayudadme.

Le estaré enormemente agradecida a quien me resuelva esta gran duda,jaja. Se nota que soy novata con el uso de php. Por eso recurrí a esta estupenda web donde personas tan expertas como los que aquí están (administradores, registrados, etc) seguro que sabrán responder mis dudas.

Gracías por intentar ayudarme, Por favor ayudarme es urgentissimo!!!
PD:Perdón por la prisa,pero necesito 1 respuesta cuanto antes..THANk'S de todo cora´zón

PD2:ya he dado de alta al usuario en el server-u
  #2 (permalink)  
Antiguo 15/04/2007, 14:21
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
Exclamación Ayuda ftp php

Soy yo otra vez , es que se me había olvidado decir algo.

El servidor es mi propio ordenador, osea, "localhost".
  #3 (permalink)  
Antiguo 15/04/2007, 15:56
Avatar de demiurgo_daemon  
Fecha de Ingreso: diciembre-2006
Ubicación: Querétaro
Mensajes: 184
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Ayuda ftp php

hola,

tienes varios errores en tu código:

1. la forma debe tener post, no get:
Código HTML:
<form id="enviadorftp" name="enviadorftp" method="post" action="recibe.php" enctype="multipart/form-data"> 
2. Un error un tanto canónico: ponle comillas a todos los índices de los arreglos:
Código PHP:
$local $_FILES['arch']['name'];
//en vez de
$local $_FILES[arch]['name']; 
3. Aquí estoy asumiendo que tu servidor html/php está en windows. Si es así, seguramente necesitas poner las diagonales invertidas como dobles:

Código PHP:
$local$_FILES[arch]['name'];
$remoto="F:\\programas proyecto\\wamp\\www\\videos\\usuario".$_FILES[arch]['tmp_name'];
ftp_put($id,$remoto,$local,FTP_BINARY); 
aunque, en realidad, $_FILES['arch']['tmp_name'] ya es una ruta completa (al menos en Linux).

4. Cuando haces lo siguiente, entonces todo el proceso del FTP se vuelve innecesario

Código PHP:
$ruta "F:\programas proyecto\wamp\www\videos\usuario".$local;
if (
is_uploaded_file($remoto))
{
    
copy($remoto$ruta);        

5. Habiendo dicho todo esto, y ya que según tu segundo mensaje el servidor http que recibe el archivo y el que sirve de bodega de archivos es el mismo, el código se puede reducir a

Código PHP:
<?php
    $local
$_FILES['arch']['name'];
     
$remoto $_FILES['arch']['tmp_name']

    
$ruta "F:\programas proyecto\wamp\www\videos\usuario".$local;

    if (
is_uploaded_file($remoto))
    {
        
copy($remoto$ruta);        
        echo 
"se ha subido";
    }
    else 
    {
        echo 
"no se pudo subir el archivo :".$local."<br>";
    }
    echo 
"Ruta-->".$ruta;
?>
como última nota, yo en vez de usar el nombre original del archivo para guardarlo, pondría uno propio para evitar problemas de codificación, seguridad, etc.

espero que esto te sea de utilidad

saludos
  #4 (permalink)  
Antiguo 16/04/2007, 04:01
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
Re: Ayuda ftp php

Gracias demiurgo_daemon por responderme voy a probar aver si me ayuda tu código, ¿vale?.- gracias de corazón , jaaj no sabes cuanto me has ayudado, no sabes lo feliz que me has hecho, me has salvado,jaja

Cuando lo pruebe te digo si me ha funcionado el código, ¿vale?, Gracias de nuevo.


Thank's
  #5 (permalink)  
Antiguo 22/04/2007, 06:31
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
Re: Ayuda ftp php

olas demiurgo_daemon

mira... ahora es otro problema el que no me deja subir el video. Seguro que he hecho algo mal.

Aver...te explico.

Código HTML:
	
$local= $_FILES['arch']['name'];
echo "<b>".$local."</b><br>";

$remoto="F:\\programas proyecto\\wamp\\www\\videos\\usuario".$_FILES['arch']['tmp_name'];
echo "<b>".$remoto."</b><br>";
			
	//ftp_put($id,$remoto,$local,FTP_BINARY);
	
	$ruta = "F:\\programas proyecto\\wamp\\www\\videos\\usuario".$local;
  echo "subiendo el archivo...<br>";
  
  // Verificamos si ya se subio el archivo temporal
		
	if (is_uploaded_file($remoto))
	{
	copy($remoto, $ruta);		
	echo "se ha subido";
  }
	else 
	{
	echo "no se pudo subir el archivo :<b>".$local."</b><br>";
	}
		
	echo "Ruta-->".$ruta;
ftp_close($id);
?>
en donde pone

Código HTML:
$remoto="F:\\programas proyecto\\wamp\\www\\videos\\usuario".$_FILES['arch']['tmp_name'];
echo "<b>".$remoto."</b><br>";
la variable $remoto no me permite seleccionar ó elegir el archivo que escogo en el campo del formulario 'arch'.Después le pongo un echo para que me muestre el contenido de esa variable, pero en lugar de mostrarmelo, no me muestra absolutamente nada. y por tanto por eso creo que no me sube el vídeo.

Mi pregunta es: ¿Como podría poner esto para que me permitiese subir el vídeo bien? ¿Podrías ponerme el código?. ¿Podrías mirar haber si tengo algún fallo en el código? (que seguro que tengo alguno)

Por favor contesta lo más antes posible, por favor, te lo agradecería mucho

PD: gracias por las indicaciones de antes, me solucionaste el problema anterior. eres el rey
Gracias y perdona por mi torpeza, jaja
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 03:50.