Скачать файл с ftp с помощью curl и php - программирование
Подтвердить что ты не робот

Скачать файл с 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);

Я могу получить список файлов, но об этом

4b9b3361

Ответ 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);