我想使用curl从服务器下载* .txt文件,但遗憾的是我无法理解如何操作,因为我是curl的初学者,我虽然使用来自boost :: filesystem的递归迭代器,也许你有任何不同的方法来解决我的问题?谢谢你)
答案 0 :(得分:0)
boost::filesystem
仅适用于本地计算机上的文件路径和本地网络上的UNC路径。您不能使用它来通过Internet迭代远程文件。
如果文件在HTTP服务器上,则libCURL 不能直接迭代文件,因为该功能不是HTTP协议的一部分。您的仅希望是当您请求文件所在的实际目录的URL时,HTTP服务器提供包含文件列表的HTML文件(或其他格式)。但是,出于明显的安全原因,许多HTTP服务器禁用此功能!相反,大多数服务器将重定向到特定文件,例如index.html
,index.php
,default.aspx
等。但是,如果HTTP服务器允许检索文件列表,则必须检索并手动解析列出数据以确定各个文件的URL,然后您可以根据需要下载它们。
如果文件在FTP服务器上,那么这是更理想的,因为目录列表是FTP协议的一部分,并且libCURL可以检索FTP目录列表(确保请求的URL以反斜杠结尾,因此libCURL知道正在请求目录而不是特定文件)。但是,您负责解析列表数据,该数据可以是FTP服务器决定发送的任何格式(并且各种在线FTP服务器使用了多种列表格式!)。现代FTP服务器支持FTP MLSD
和MLST
命令(与原始LIST
命令相反),以便于更容易地解析列表数据,因此您可以尝试指示libCURL使用这些命令(如果FTP服务器支持这些命令,则通过libCURL的CURLOPT_CUSTOMREQUEST
选项。或者,如果您只对文件名而不是文件详细信息(如时间戳,大小等)感兴趣,则可以使用FTP NLST
命令(通过libCURL的CURLOPT_DIRLISTONLY
选项)。