2009-07-24 20 views
22
私はftpサーバーからcurlとphpを使ってファイルをダウンロードしようとしていますが、 については、私はファイルの一覧を取得できます。
+1

は、ファイルにそれを完全なURLを与え、FTPLISTONLYオプションを削除しようとしていますか? – cOle2

+2

好奇心のために、これらの回答が役立ちましたか? –

+0

ftpからcurlを使ってファイルをダウンロードするためのクラスをビルドしました。それをチェックしてください http://thien321091.github.io/Curl-FTP-with-php/ – HoangHieu

答えて

4
  • ファイルのフルパスにCURLOPT_URLを設定してください。
  • CURLOPT_FTPLISTONLY行を削除します。
  • はcurl_exec前にこれらの行を追加します。

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

私の推測では、あなたのURLがディレクトリではなく、ファイルの方を向いているということです。ファイルに完全なURLをCURLOPT_URL入力する必要があります。また、ファイルをダウンロードしたい場合は、どこかに保存したいかもしれません。

の作業例:ここではFTP経由して接続する方法を含む

$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

参照CURLヘルプhttp://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library

注:ファイルがHTTPからアクセスすることができれば、ただのリンクを使用することをお勧めしますEG:http://host.com/file.txtとし、file_get_contentsまたはfile関数を使用します。

http://uk.php.net/file_get_contentsなどの方法を使用して、ファイルをコンピュータにダウンロードできます。このオプションは、FTPを使用してダウンロードするよりも優れています。上記のリンクで説明したように、FTPを使用していつでもアップロードすることができます。

0

これらの回答をすべて試しても、それが機能していないと、これが最終的に機能するようになりました。

$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

コミュニティ応答は微調整で動作します:

CURLOPT_FILEがCURLOPT_RETURNTRANSFERが設定されて に依存しているためCURLOPT_RETURNTRANSFER を設定する前にCURLOPT_FILE を設定すると、おそらく、動作しないことが表示されます。

このページにjoeterranovaさんのコメントを引用:http://php.net/manual/fr/function.curl-setopt.php

関連する問題