2009-07-24 13 views
22

Próbuję pobrać plik z serwera FTP za pomocą curl i PHP, ale nie mogę znaleźć żadnej dokumentacji, aby pomócpobrania pliku z FTP za pomocą curl i 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); 

mogę uzyskać listę plików, ale to na ten temat

+1

próbowałeś nadając jej pełny adres URL do pliku i usunięcie opcji FTPLISTONLY? – cOle2

+2

Z ciekawości, czy któraś z tych odpowiedzi pomogła? –

+0

Mam zbudować klasę do pobrania pliku z ftp za pomocą curl. sprawdź to http://thien321091.github.io/Curl-FTP-with-php/ – HoangHieu

Odpowiedz

4
  • Ustaw CURLOPT_URL na pełną ścieżkę pliku.
  • Usuń linię CURLOPT_FTPLISTONLY.
  • Dodaj te linie przed curl_exec:

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

Domyślam się, że adres URL jest skierowany w stronę katalogu, a nie plik. Musisz podać CURLOPT_URL pełny adres URL do pliku. Również jeśli chcesz pobrać plik, możesz go gdzieś chcieć zapisać.

przykład robocza:

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

See CURL pomaga tym, jak połączyć się z nim za pośrednictwem FTP tutaj http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library

UWAGA: Jeśli plik można uzyskać z protokołu HTTP to lepiej po prostu skorzystać z linku EG: http://host.com/file.txt, a następnie użyj file_get_contents lub funkcji plików.

Można następnie użyć http://uk.php.net/file_get_contents lub dowolnego innego sposobu pobrania pliku na komputer. Ta opcja będzie lepsza niż przy użyciu FTP do pobrania. Zawsze możesz użyć FTP do przesłania, jak wspomniano w powyższym linku.

0

Po wypróbowaniu wszystkich tych odpowiedzi i po tym, jak żadne z nich nie działa, właśnie to w końcu udało mi się wykonać.

$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); 
1
$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); 
4

odpowiedź Wspólnota współpracuje z drobnych korekt:

Wydaje się, że ustawienie CURLOPT_FILE przed ustawieniem CURLOPT_RETURNTRANSFER nie działa, prawdopodobnie dlatego CURLOPT_FILE zależy CURLOPT_RETURNTRANSFER jest ustawiony.

Cytując komentarz joeterranova na tej stronie: http://php.net/manual/fr/function.curl-setopt.php

Powiązane problemy