我尝试通过Webdav API(文档)上传一个字符串(html)到我的NextCloud。我使用了多部分文件上传,因为我读到这是实现文件上传到API的正常方式。当我上传一个文件时,它正确地创建了它,我上传通过,但它总是添加以下内容到文件:
----------------------------371289179749834008757921
Content-Disposition: form-data; name="data"
Hello world
----------------------------371289179749834008757921--
我只想把"Hello world"部分放到文件中。这是我用来把字符串作为文件上传的代码:
function sendToNextCloud(string $fileName, string $content)
{
$client = new Client();
$headers = [
'Authorization' => 'Basic Password',
];
$options = [
'multipart' => [
[
'name' => 'file',
'contents' => $content,
'filename' => $fileName,
'headers' => [
'Content-Type' => 'multipart/form-data'
]
]
]];
$request = new \GuzzleHttp\Psr7\Request('PUT', 'nextcloud:8080/remote.php/webdav/' . $fileName, $headers);
dump($request, $options);
$res = $client->sendAsync($request, $options)->wait();
dump($res->getBody()->getContents());
if ($res->getStatusCode() == 201) {
dump('Successfully sent');
}
return "test";
}
我是否需要更改多部分标题中的内容类型、设置不同的选项或使用不同的上传方式?
谢谢你的帮助。
1条答案
按热度按时间tjjdgumg1#
我找到了解决问题的办法:
这将从一个简单的字符串创建一个文件,而不使用multipart,只使用一个简单的PUT方法。