使用 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 可以 用于分页,但我敢打赌很少有人支持它。