使用 PHP 连接到 WebDAV?

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

我想使用 PHP 连接到 WebDAV,并能够上传文件等。但是,我不知道如何连接到它。我想它最终会像打开套接字并发送正确的标头/命令一样简单,但我不知道需要发送什么。我想在没有额外的库/类的情况下做到这一点。

有人能指出我正确的方向吗?

php upload webdav fsockopen
2个回答
10
投票

是的,您可以像任何其他 HTTP 服务器一样连接到 WebDAV 服务器,但您必须与 WebDAV 对话。

但是,由于 HTTP 和 WebDAV 之间存在足够的差异,您需要自己处理,因此最好使用 WebDAV 客户端或库。

WebDAV 是一种扩展的 HTTP 术语,带有 PROPFIND、PROPPATCH、REPORT 等附加动词。它还支持使用 xml 负载通过 PROPFIND 和 PROPPATCH 查询、设置和获取 webdav 资源的元属性。虽然很多方面应该与 HTTP 概念类似。它与 HTTP 有许多不同的小变化/细微差别。

上面对 WebDAV 的简要介绍可能有点误导,因此请阅读 WebDAV RFC 和 Info 上的详细信息。

请参阅以下典型的客户端实现:


0
投票
use GuzzleHttp\Client;

$client = new Client();
$filePath = "/tmp/somefile.txt";
$uri = "https://<your_host>/path/". basename($filePath);

// Assume you are using the basic auth. Change that if needed.
$response = $client->request('PUT', $uri, [
                'auth' => [$username, $password],
                'body' => fopen($filePath, 'r')
            ]);
if ($response->getStatusCode() == 201) {
  // upload completed
}
© www.soinside.com 2019 - 2024. All rights reserved.