Скачать файл с ftp с помощью curl и php
Я пытаюсь загрузить файл с 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);
Я могу получить список файлов, но об этом
Ответы
Ответ 1
Я предполагаю, что ваш 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);
Ответ 2
- Установите CURLOPT_URL на полный путь к файлу.
- Удалите строку CURLOPT_FTPLISTONLY.
-
Добавьте эти строки до curl_exec:
$file = fopen("filename_to_save_to", "w");
curl_setopt($curl, CURLOPT_FILE, $file);
Ответ 3
Ответ сообщества работает с незначительной настройкой:
Похоже, что установка CURLOPT_FILE перед установкой CURLOPT_RETURNTRANSFER не работает, по-видимому, потому, что CURLOPT_FILE зависит от CURLOPT_RETURNTRANSFER.
Цитата joeterranova комментарий на этой странице: http://php.net/manual/fr/function.curl-setopt.php
Ответ 4
См. справку 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 для загрузки, как указано в ссылке выше.
Ответ 5
$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);
Ответ 6
Попробовав все эти ответы и не имея ни одного из них, это то, что я, наконец, приступил к работе.
$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);