servidor por para leer ejemplo directorio descargar crear con bat automaticamente archivos archivo ajeno php curl

por - descarga un archivo de ftp usando curl y php



ftp php ejemplo (6)

Intento descargar un archivo de un servidor ftp usando curl y php pero no encuentro ninguna documentación que me ayude

$curl = curl_init(); curl_setopt($curl, CURLOPT_URL,"ftp://$_FTP[server]"); curl_setopt($curl, CURLOPT_FTPLISTONLY, 1); curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ($curl);

puedo obtener una lista de archivos, pero eso es todo


Consulte la ayuda de CURL, incluida la forma de conectarse mediante FTP aquí http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library

NOTA: SI se puede acceder al archivo desde HTTP, es mejor utilizar el enlace EG: http://host.com/file.txt y luego usar file_get_contents o file functions.

A continuación, puede usar http://uk.php.net/file_get_contents o de cualquier otra forma para descargar el archivo a su computadora. Esta opción será mejor que usar FTP para descargar. Siempre puede usar FTP para cargar como se menciona en el enlace de arriba.


Después de probar todas estas respuestas y no tener ninguna de ellas funcionando, esto es lo que finalmente llegué a trabajar.

$curl = curl_init(); $fh = fopen("FILENAME.txt", ''w''); curl_setopt($curl, CURLOPT_URL, "ftp://{$serverInfo[''username'']}:{$servererInfo[''password'']}@{$serverInfo[''server'']}/{$serverInfo[''file'']}"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); fwrite($fh, $result); fclose($fh); curl_close($curl);


La respuesta de la comunidad funciona con ajustes menores:

Parece que establecer CURLOPT_FILE antes de configurar CURLOPT_RETURNTRANSFER no funciona, presumiblemente porque CURLOPT_FILE depende de que se haya configurado CURLOPT_RETURNTRANSFER.

Citando el comentario de joeterranova en esta página: http://php.net/manual/fr/function.curl-setopt.php


Supongo que su URL apunta hacia un directorio, no a un archivo. Debería enviar CURLOPT_URL la URL completa al archivo. Además, si desea descargar un archivo, puede guardarlo en algún lugar.

Ejemplo de trabajo:

$curl = curl_init(); $file = fopen("ls-lR.gz", ''w''); curl_setopt($curl, CURLOPT_URL, "ftp://ftp.sunet.se/ls-lR.gz"); #input curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FILE, $file); #output curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]"); curl_exec($curl); curl_close($curl); fclose($file);


$ftp_location = put your ftp adress here; $location_login = put your login here; $location_pwd = put your password here; $conn_id = ftp_connect("$ftp_location"); $login_result = ftp_login($conn_id, $location_login, $location_pwd); if ((!$conn_id) || (!$login_result)) { echo "FTP connection has failed!"; exit; } else { echo "Connected"; } // get the file // change products.csv to the file you want $local = fopen("products.csv","w"); $result = ftp_fget($conn_id, $local,"products.csv", FTP_BINARY); fwrite($local, $result); fclose($local); // check upload status if (!$result) { echo "FTP download has failed!"; } else { echo "Downloaded "; } // close the FTP stream ftp_close($conn_id);


  • Establezca CURLOPT_URL en la ruta completa del archivo.
  • Elimina la línea CURLOPT_FTPLISTONLY.
  • Agregue estas líneas antes de curl_exec:

    $file = fopen("filename_to_save_to", "w"); curl_setopt($curl, CURLOPT_FILE, $file);