我認爲我應該使用CURLOPT_DIRLISTONLY
但我不確定如何繼續。如何使用libcurl(for C)打印遠程FTP目錄列表?
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
我不確定如何打電話來實際打印清單。
我認爲我應該使用CURLOPT_DIRLISTONLY
但我不確定如何繼續。如何使用libcurl(for C)打印遠程FTP目錄列表?
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
我不確定如何打電話來實際打印清單。
啓用對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);
}
你想要一個遠程目錄列出哪個協議? libcurl支持很多不同的協議,有些你不一定會得到一個目錄列表(例如HTTP,根據服務器的良好意願提供目錄列表,通常只用于格式化的HTML頁面,因此不是標準格式) – Ale
對不起,忘了提及,需要它爲ftp –