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);