使用 PROPFIND 显示文件夹中文件的分块列表
Show chuncked list of files in folders with PROPFIND
我们正在使用 PROPFIND 请求获取特定文件夹中所有文件的列表。
curl --location --request PROPFIND 'https://example.com/some_folder' \
--header 'Authorization: Basic eHh4Onl5eQ=='
但是在某些文件夹中我们有大约 1M 的文件并且请求超时。
有什么方法可以设置每个请求的起始位置和文件计数限制吗?
恢复不完整的下载真的不是 curl 的事情,它是 wget 的事情(curl 没有对自动 retrying/resuming 不完整下载的本地支持,但是 wget 确实 支持它.要在 curl 中做同样的事情,你需要一些脚本语言和 curl,比如 php/python/whatever)
默认情况下,curl 下载到 stdout,wget 下载到文件,要让 wget 下载到 stdout,添加参数 -O-
,wget 默认情况下相当于 --location
的 curl,所以没有那里需要翻译, --request PROPFIND
翻译成 --method=PROPFIND
, --header 'Authorization: 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 次,您可以使用 --tries=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
Is there any way to set start position and file count limit per request?
.. 浏览了 RFC1918 和 RFC5689,我不这么认为;它是 HTTP,因此您可以发出 HTTP Range requests
来仅下载列表的一部分,但是您将无法将其解析为 well-formatted XML,您必须 fuzzy-parse 它就像浏览器解析 HTML..(PS libxml2 对解析损坏 XML 有很好的支持,并且 PHP 对 libxml2 有很好的绑定,可能不会很困难fuzzy-parse 与 PHP 的 DOMDocument::loadHTML() & co)
RFC6578 可以 用于分页,但我敢打赌很少有人支持它。
我们正在使用 PROPFIND 请求获取特定文件夹中所有文件的列表。
curl --location --request PROPFIND 'https://example.com/some_folder' \
--header 'Authorization: Basic eHh4Onl5eQ=='
但是在某些文件夹中我们有大约 1M 的文件并且请求超时。 有什么方法可以设置每个请求的起始位置和文件计数限制吗?
恢复不完整的下载真的不是 curl 的事情,它是 wget 的事情(curl 没有对自动 retrying/resuming 不完整下载的本地支持,但是 wget 确实 支持它.要在 curl 中做同样的事情,你需要一些脚本语言和 curl,比如 php/python/whatever)
默认情况下,curl 下载到 stdout,wget 下载到文件,要让 wget 下载到 stdout,添加参数 -O-
,wget 默认情况下相当于 --location
的 curl,所以没有那里需要翻译, --request PROPFIND
翻译成 --method=PROPFIND
, --header 'Authorization: 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 次,您可以使用 --tries=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
Is there any way to set start position and file count limit per request?
.. 浏览了 RFC1918 和 RFC5689,我不这么认为;它是 HTTP,因此您可以发出 HTTP Range requests
来仅下载列表的一部分,但是您将无法将其解析为 well-formatted XML,您必须 fuzzy-parse 它就像浏览器解析 HTML..(PS libxml2 对解析损坏 XML 有很好的支持,并且 PHP 对 libxml2 有很好的绑定,可能不会很困难fuzzy-parse 与 PHP 的 DOMDocument::loadHTML() & co)
RFC6578 可以 用于分页,但我敢打赌很少有人支持它。