2009-07-24 8 views
22

내가 곱슬 곱슬와 PHP를 사용하여 FTP 서버에서 파일을 다운로드하기 위해 노력하고있어하지만 난다운로드 컬과 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); 

내가 목록을 얻을 수 있습니다 도움이되는 모든 문서를 찾을 수 없습니다를 사용하여 FTP에서 파일 파일의 내용이지만 그게 전부입니다

+1

당신이 파일에에게 전체 URL을 제공하고 FTPLISTONLY 옵션을 제거 봤어? – cOle2

+2

호기심에서 벗어난 답변이 도움이 되었습니까? –

+0

curl을 사용하여 ftp에서 파일을 다운로드하기위한 클래스를 빌드했습니다. 그것을 확인하십시오 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에서 액세스 할 수 있다면 그냥 링크를 사용하는 것이 좋습니다 예 : http://host.com/file.txt 다음 file_get_contents 또는 파일 기능을 사용하십시오.

그런 다음 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