2009-07-24 38 views
22

Tôi đang cố gắng để tải về một tập tin từ một máy chủ FTP sử dụng curl và php nhưng tôi không thể tìm thấy bất kỳ tài liệu hướng dẫn để giúptải về một tập tin từ ftp sử dụng curl và 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); 

tôi có thể có được một danh sách của các tệp nhưng thats about it

+1

có bạn đã cố gắng cho nó đầy đủ url đến tập tin và loại bỏ tùy chọn FTPLISTONLY? – cOle2

+2

Ngoài sự tò mò, có bất kỳ câu trả lời nào trong số này giúp ích không? –

+0

Tôi đã xây dựng một lớp học để tải về tập tin từ ftp bằng cách sử dụng curl. kiểm tra xem nó ra http://thien321091.github.io/Curl-FTP-with-php/ – HoangHieu

Trả lời

4
  • Đặt CURLOPT_URL thành đường dẫn đầy đủ của tệp.
  • Xóa dòng CURLOPT_FTPLISTONLY.
  • Thêm những dòng này trước khi curl_exec:

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

tôi đoán là URL của bạn đang chỉ tay về phía một thư mục, không phải là một tập tin. Bạn sẽ cần phải cung cấp CURLOPT_URL URL đầy đủ cho tệp. Ngoài ra nếu bạn muốn tải xuống một tệp, bạn có thể muốn lưu nó ở đâu đó.

dụ làm việc:

$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

Xem giúp CURL bao gồm cách để kết nối với nó qua FTP đây http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library

LƯU Ý: NẾU các tập tin có thể được truy cập từ HTTP sau đó nó là tốt hơn để chỉ cần sử dụng liên kết EG: http://host.com/file.txt và sau đó sử dụng các hàm file_get_contents hoặc tệp.

Sau đó, bạn có thể sử dụng http://uk.php.net/file_get_contents hoặc bất kỳ cách nào khác để tải tệp xuống máy tính của mình. Tùy chọn này sẽ tốt hơn khi sử dụng FTP để tải xuống. Bạn luôn có thể sử dụng FTP để tải lên như đã đề cập trong liên kết ở trên.

0

Sau khi thử tất cả các câu trả lời này và không có câu trả lời nào trong số chúng hoạt động, đây là những gì tôi cuối cùng đã làm việc.

$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

phản ứng cộng đồng làm việc với điều chỉnh nhỏ:

Dường như thiết CURLOPT_FILE trước khi thiết CURLOPT_RETURNTRANSFER không hoạt động, có lẽ vì CURLOPT_FILE phụ thuộc vào CURLOPT_RETURNTRANSFER đang được thiết lập.

Trích dẫn bình luận của joeterranova trên trang này: http://php.net/manual/fr/function.curl-setopt.php

Các vấn đề liên quan