如何使用 PHP webDAV 客户端列出文件?

问题描述 投票:0回答:1

我想管理 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 客户端

php webdav sabredav
1个回答
0
投票

1
传递给
depth
propfind
(第三个)参数:

$folder_content = $client->propfind('', [], 1);
© www.soinside.com 2019 - 2024. All rights reserved.