我想使用 PHP 连接到 WebDAV,并能够上传文件等。但是,我不知道如何连接到它。我想它最终会像打开套接字并发送正确的标头/命令一样简单,但我不知道需要发送什么。我想在没有额外的库/类的情况下做到这一点。
有人能指出我正确的方向吗?
是的,您可以像任何其他 HTTP 服务器一样连接到 WebDAV 服务器,但您必须与 WebDAV 对话。
但是,由于 HTTP 和 WebDAV 之间存在足够的差异,您需要自己处理,因此最好使用 WebDAV 客户端或库。
WebDAV 是一种扩展的 HTTP 术语,带有 PROPFIND、PROPPATCH、REPORT 等附加动词。它还支持使用 xml 负载通过 PROPFIND 和 PROPPATCH 查询、设置和获取 webdav 资源的元属性。虽然很多方面应该与 HTTP 概念类似。它与 HTTP 有许多不同的小变化/细微差别。
上面对 WebDAV 的简要介绍可能有点误导,因此请阅读 WebDAV RFC 和 Info 上的详细信息。
请参阅以下典型的客户端实现:
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
}