使用Guzzle通过NextCloud WebDAV API上传字符串出现冗余内容问题
解决NextCloud WebDAV上传字符串时内容带冗余信息的问题
你用multipart方式上传是错误的,WebDAV的PUT接口不需要multipart格式,直接把字符串作为请求体发送即可。当前代码里使用Guzzle的multipart选项,会让Guzzle自动生成multipart分隔边界和表单头信息,这些内容被NextCloud当成文件内容保存,才出现了冗余信息。
修正后的代码
function sendToNextCloud(string $fileName, string $content) { $client = new Client(); $res = $client->put('http://nextcloud:8080/remote.php/webdav/' . $fileName, [ 'headers' => [ 'Authorization' => 'Basic 你的Base64编码凭证', // 替换为实际的"用户名:密码"Base64编码值 'Content-Type' => 'text/html', // 根据上传内容设置对应类型,纯文本用text/plain ], 'body' => $content, ]); if ($res->getStatusCode() == 201) { echo 'Successfully sent'; } return "test"; }
关键调整说明
- 移除
multipart选项,改用body参数直接传递要上传的字符串内容 - 正确设置
Content-Type请求头,NextCloud会根据该头识别文件类型 - 确保
Authorization头是正确的Base64编码格式(格式为Basic [Base64(用户名:密码)])
内容的提问来源于stack exchange,提问作者Marvin Tröster
相关产品推荐
相关产品推荐

