Curl 使用PROPFIND显示文件夹中的文件列表

Curl 使用PROPFIND显示文件夹中的文件列表,curl,webdav,Curl,Webdav,我们使用PROPFIND请求获取特定文件夹中所有文件的列表 curl --location --request PROPFIND 'https://example.com/some_folder' \ --header 'Authorization: Basic eHh4Onl5eQ==' 但在一些文件夹中,我们有大约1M个文件并请求超时。 有没有办法设置每个请求的开始位置和文件计数限制?恢复不完整的下载真的不是curl的事,而是wget的事(curl本机不支持自动重试/恢复不完整的下

我们使用PROPFIND请求获取特定文件夹中所有文件的列表

curl --location --request PROPFIND 'https://example.com/some_folder' \
    --header 'Authorization: Basic eHh4Onl5eQ=='
但在一些文件夹中,我们有大约1M个文件并请求超时。
有没有办法设置每个请求的开始位置和文件计数限制?

恢复不完整的下载真的不是curl的事,而是wget的事(curl本机不支持自动重试/恢复不完整的下载,但wget确实支持它。要在curl中执行相同的操作,您需要一些与curl一起使用的脚本语言,如php/python/where)

默认情况下,curl下载到stdout,wget下载到文件,为了让wget下载到stdout,添加参数
-O-
,wget默认情况下做curl的等价物
--location
,因此那里不需要翻译,
--request-PROPFIND
翻译成
--method PROPFIND
,以及
--header'on:Basic eHh4Onl5eQ=='
大致翻译为
--auth no challenge--http user='xxx'--http password='yyy'
,把它们放在一起,我们得到

wget --tries=10 -O- --method=PROPFIND --auth-no-challenge --http-user='xxx' --http-password='yyy' 'https://example.com/some_folder'
在放弃之前,它将自动恢复下载最多10次,您可以使用
--trys=10
参数进行更改

为完整起见,以下是wget将随上述调用一起发送的请求:

PROPFIND /some_folder HTTP/1.1
User-Agent: Wget/1.19.1 (cygwin)
Accept: */*
Accept-Encoding: identity
Authorization: Basic eHh4Onl5eQ==
Host: example.com
Connection: Keep-Alive
有没有办法设置每个请求的开始位置和文件计数限制


…略读了RFC1918和RFC5689之后,我不这么认为;它是HTTP,因此您可以发出
HTTP范围请求
,只下载列表的一部分,但这样您就无法像解析格式良好的XML一样解析它,您将不得不像解析HTML一样对其进行模糊解析。。(PS libxml2对解析损坏的XML有很好的支持,PHP对libxml2有很好的绑定,用PHP的DOMDocument::loadHTML()和co进行模糊解析可能并不困难)

可以用于分页,但我敢打赌对它的支持有点少。

您不必手动执行
授权:Basic eHh4Onl5eQ=
操作,您只需执行
curl--Basic--user'xxx:yyy'
^谢谢。例如,我从PHP发出请求,它会生成正确的请求。在PHP中,它将是
>curl\u setopt\u array($ch,array(CURLOPT\u HTTPAUTH=>CURLAUTH\u BASIC,CURLOPT\u USERPWD=>'xxx:yyy'));
看起来解决方案可以添加一个用法示例,我将其标记为正确答案。