Foros del Web » Programando para Internet » PHP »

Bajar archivo usando ftp_fget

Estas en el tema de Bajar archivo usando ftp_fget en el foro de PHP en Foros del Web. Hola gente. Estoy intentando bajar un archivo que está en una carpeta de un sitio web utilizando la funcion ftp_fget. El codigo no me da ...
  #1 (permalink)  
Antiguo 20/06/2004, 08:27
 
Fecha de Ingreso: mayo-2004
Ubicación: El mundo
Mensajes: 63
Antigüedad: 13 años, 7 meses
Puntos: 0
Bajar archivo usando ftp_fget

Hola gente.

Estoy intentando bajar un archivo que está en una carpeta de un sitio web utilizando la funcion ftp_fget. El codigo no me da ningun error. Me dice que se ha bajado correctamente. Pero cuando lovoy a buscar en la carpeta donde debería encontrarse resulta que no hay nada.
La conexion con el servidor ftp la hace bien (por lo menos eso parece). El problema es que no baja nada.

Les adjunto el codigo para que le deis una mirada a ver si encontrais que es lo que falla.

La variable $nomarch la recidbo desde una pagina que tiene un formulario donde el usuario selecciona cual de los archivos de esa carpeta remota quiere bajar.

Desde ya muchas gracias.
Saludos.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<?
$host = 'ftp.xxx.xxx';
$user = 'zzzzz';
$pass = 'yyyyyyyy';
$archlocal = 'c:\\temp\\'.$nomarch;
$archremoto = $nomarch;
$conn = ftp_connect("$host");
if (!$conn){
echo 'Error: no se puede conectar al servidor FTP<br />';
exit;
}

echo 'Establecida la conexion con el servidor FTP <br /><br /><br />';
@ $result = ftp_login($conn, $user, $pass);
if (!$result){
echo "Error: No puede conectar con ese nombre de usuario<br />";
ftp_quit($conn);
exit;
}
echo 'Establecida la conexión con ese identificador de usuario<br /><br /><br />';

echo "Bajando archivo....";
$fp = fopen($archlocal,'w');
if (!$success = ftp_fget($conn, $fp, $archremoto, FTP_BINARY)){
echo 'Error: No se puede bajar el archivo';
ftp_quit($conn);
exit;
}
fclose($fp);
echo 'Archivo bajado satisfactoriamente';
ftp_quit($conn);
?>
</body>
</html>
  #2 (permalink)  
Antiguo 20/06/2004, 12:09
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Supongo que sabras que ftp_get() baja el fichero al servidor PHP, no a la maquina del cliente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 20/06/2004, 14:51
 
Fecha de Ingreso: mayo-2004
Ubicación: El mundo
Mensajes: 63
Antigüedad: 13 años, 7 meses
Puntos: 0
No lo sabia...

... pero en todo caso yo estoy utilizando ftp_fget. Ya que estamos me gustaria saber si esta funcion hace lo mismo que ftp_get de descargarlo en el servidor PHP.
Y se sigue agradeciendo si alguien tiene alguna respuesta al problema en si que es: bajar un archivo desde un sitio web al ordenador local mediante las funciones de manejo de ftp de PHP.
  #4 (permalink)  
Antiguo 20/06/2004, 15:40
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Si, hace lo mismo: bajarlo al servidor FTP. Las funciones FTP de PHP hacen que el servidor PHP funcione como un cliente FTP. Asi que la unica forma de comunicarse con el equipo del cliente es que este equipo del cliente fuese un servidor FTP, lo que no suele ser normal.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 20/06/2004, 17:05
 
Fecha de Ingreso: mayo-2004
Ubicación: El mundo
Mensajes: 63
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Perdon por mi insistencia

Pero entonces quiere decir que no hay forma de, utilizando funciones de PHP, lograr lo que yo necesito: que un archivo que está en una carpeta dentro del sitio web se pueda bajar al ordenador del cliente?

Pues, si es así se aceptan sugerencias para poder hacerlo.
Muchas gracias.

Saludos
  #6 (permalink)  
Antiguo 21/06/2004, 02:32
 
Fecha de Ingreso: mayo-2004
Ubicación: El mundo
Mensajes: 63
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Alguna idea por alli?

Alguien que pueda sugerir algo?
Se agradecerá cualquier ayuda.
  #7 (permalink)  
Antiguo 21/06/2004, 09:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y .. para que quieres usar funciones de FTP?

El servidor que tiene ese servidor FTP y su cuenta creada y el que corre PHP es el mismo? .. si es así .. NO te hace falta usar "FTP" para que PHP pueda acceder al archivo y entregarlo a descargar .. tan sólo:

Código PHP:
<?
header
("cabeceras HTTP para descargar");
readfile("ruta/ynombre_archivo.tal");
?>
Para ver las cabeceras de "descargar" HTTP .. visita la función header() de PHP.net y revisa los comentarios de los usuarios:

www.php.net/header

Con las cabeceras HTTP indicaras al navegador que los datos que le envias (desde PHP) son para que inicie la descarga (y pregunte antes al "cliente" donde lo va a guardar) .. si requieres eso mismo pero automático (sin confirmación del cliente) tendrías que instalar un servidor FTP en ese PC donde vas a descargar el archivo (como ya te comentó josemi) y usar PHP como "cliente" de FTP para que se conecte a ese servidor con la cuenta (user/pass) que le asignases.

Tienes que comprender que si bien cuando usas tu "dreamweaver" o cliente FTP para subir archivos a tu servidor usas el protocolo "FTP" .. PHP puede acceder al sistema de archivos de tus servidor y es este el que lo lee (readfile() por ejemplo) y lo "entrega" al buffer de salida .. y .. para que el "navegador" (cliente) se entere de que dato es lo que se le está enviando y que hacer con el .. pues se le dice por cabeceras HTTP: "navegador: estos datos son para descargar!".

Un saludo,
  #8 (permalink)  
Antiguo 21/06/2004, 09:11
 
Fecha de Ingreso: mayo-2004
Ubicación: El mundo
Mensajes: 63
Antigüedad: 13 años, 7 meses
Puntos: 0
De acuerdo Bien bien bien....

... pero que muy bien.
Por el momento me suena a chino pero es que estoy con la cabeza en otra aplicación. Prometo mirar en los enlaces que me indicas a ver si logro averiguar como va la cosa. He utilizado la función header pero normalmente para redireccionar el navegador para una u otrapagina segun alguna condición. Ya miraré como se maneja este tema.
No te extrañe (y espero no te moleste) si te pido un poco mas de ayuda dentro de un rato o mañana.
Muchisimas, muchisimas gracias.

Saludos
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 11:45.