Я пытаюсь загрузить файл с ftp-сервера с помощью curl и php, но я не могу найти какую-либо документацию, чтобы помочь
$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);
я могу получить список файлов, но об этом
Я предполагаю, что ваш URL указывает на каталог, а не на файл. Вам нужно будет передать CURLOPT_URL полный URL-адрес файла. Также, если вы хотите загрузить файл, вы можете его где-то сохранить.
Рабочий пример:
$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);
Добавьте эти строки до curl_exec:
$file = fopen("filename_to_save_to", "w"); curl_setopt($curl, CURLOPT_FILE, $file);
Ответ сообщества работает с незначительной корректировкой:
Похоже, что установка CURLOPT_FILE перед установкой CURLOPT_RETURNTRANSFER не работает, по-видимому, потому, что CURLOPT_FILE зависит от установленного CURLOPT_RETURNTRANSFER.
Процитировать комментарий joeterranova на этой странице: http://php.net/manual/fr/function.curl-setopt.php
См. Справку CURL, в том числе о том, как подключиться к ней через FTP здесь. http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library
ПРИМЕЧАНИЕ. Если файл доступен из HTTP, тогда лучше использовать ссылку EG: http://host.com/file.txt, а затем использовать функции file_get_contents или файлы.
Затем вы можете использовать http://uk.php.net/file_get_contents или любой другой способ загрузить файл на свой компьютер. Этот вариант будет лучше, чем использование FTP для загрузки. Вы всегда можете использовать FTP для загрузки, как указано в ссылке выше.
$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);
Пробовав все эти ответы и не работая ни с кем, это то, что я, наконец, приступил к работе.
$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);