我想管理 nextCloud 实现 (cd.wedos.com) 上的文件。我可以使用 winSCP 连接到服务器并列出、下载和上传文件。我想通过 PHP 做同样的事情。感谢 SO 我能够从我的 Windows 11 - 我的开发环境连接到 webDAV 服务器。
我确实搜索了如何使用 Sabre webDAV 客户端,但无论如何我都不知道如何列出文件。
$folder_content = $client->propfind('', []);
退货
array(5) {
["{DAV:}getlastmodified"]=>
string(29) "Thu, 18 Jul 2024 20:04:28 GMT"
["{DAV:}resourcetype"]=>
object(Sabre\DAV\Xml\Property\ResourceType)#14 (1) {
["value":protected]=>
array(1) {
[0]=>
string(16) "{DAV:}collection"
}
}
["{DAV:}quota-used-bytes"]=>
string(11) "11825361054"
["{DAV:}quota-available-bytes"]=>
string(13) "3286709522274"
["{DAV:}getetag"]=>
string(15) ""6699754ce26f9""
}
Sabre 官方文档正在使用
$client->propfind('collection', array(
但参数集合给了我错误未找到,我使用了 '' 代替
$client->propfind('', array(
'{DAV:}displayname',
'{DAV:}getcontentlength',
));
返回
array(1) {
["{DAV:}displayname"]=>
string(47) "wedos-auth-modified-0f5f-4c87-99a2-modified"
}
我不知道这意味着什么。
我找到了如何使用 propfind 的其他示例
$folder_content = $client->propfind('', array(
'{DAV:}getlastmodified',
'{DAV:}getcontenttype',
));
这给了我结果
array(1) {
["{DAV:}getlastmodified"]=>
string(29) "Thu, 18 Jul 2024 20:04:28 GMT"
}
在官方文档中有一个名为“Discovering WebDAV features”的部分。我认为这会有所帮助。所以我运行了它
$features = $client->options();
返回的内容对我没有帮助。
array(8) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
[2]=>
string(14) "extended-mkcol"
[3]=>
string(14) "access-control"
[4]=>
string(40) "calendarserver-principal-property-search"
[5]=>
string(25) "nextcloud-checksum-update"
[6]=>
string(18) "nc-calendar-search"
[7]=>
string(27) "nc-enable-birthday-calendar"
}
有人可以帮助我列出特定文件夹的所有文件和目录吗?
更新
感谢奥利维尔,我能够使用
curl.exe https://cd.wedos.com/remote.php/dav/files/wedos-auth-anonymized/upload --user username:password --request PROPFIND
列出
它并不完全是通过 sabre webDAV 客户端列出目录,但我想它会起作用...我希望我也可以使用 cURL 来上传和下载文件。
不过我还是更喜欢使用 sabre 客户端
将
1
传递给 depth
的 propfind
(第三个)参数:
$folder_content = $client->propfind('', [], 1);