2015-12-15 105 views
0

我認爲我應該使用CURLOPT_DIRLISTONLY但我不確定如何繼續。如何使用libcurl(for C)打印遠程FTP目錄列表?

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly); 

我不確定如何打電話來實際打印清單。

+0

你想要一個遠程目錄列出哪個協議? libcurl支持很多不同的協議,有些你不一定會得到一個目錄列表(例如HTTP,根據服務器的良好意願提供目錄列表,通常只用于格式化的HTML頁面,因此不是標準格式) – Ale

+0

對不起,忘了提及,需要它爲ftp –

回答

1

啓用對FTP的CURLOPT_DIRLISTONLY選項只獲取文件名,而不是文件的詳細信息(如文件大小,日期等)的影響基本上是使用純ls(只名稱)或ls -l(上市之間的差異在UNIX上)。在FTP協議級別,啓用CURLOPT_DIRLISTONLY將使libcurl發出NLST命令,而不是LIST。然後,要獲取目錄列表,您的操作與文件傳輸完全相同,區別在於您的ftp:// URL將指向一個目錄(而不是文件)。該傳輸的內容將成爲您的目錄列表。

要顯示目錄列表,而不是將其保存到文件中,可以使用CURLOPT_WRITEFUNCTION選項讓libcurl調用您爲每個數據塊提供的回調函數。該功能只需要fwrite的數據到stdout來顯示它。它應該看起來像這樣:

void write_callback(void* data, size_t size, size_t nmemb, void* ptr) 
{ 
    fwrite(data, size, nmemb, stdout); 
} 

int main() 
{ 
    // ... 
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_callback); 
    // ... 
    ret = curl_easy_perform(handle); 
} 
+0

好吧謝謝,我將如何直接打印到命令窗口,而不是將其保存到文件? –

+0

我給答案加了一個例子 – Ale

+0

非常感謝你! –