diff --git a/go_cloud/internal/storage/webdav.go b/go_cloud/internal/storage/webdav.go index 9e74492..a209576 100644 --- a/go_cloud/internal/storage/webdav.go +++ b/go_cloud/internal/storage/webdav.go @@ -55,7 +55,12 @@ func (c *WebDAVClient) ensureParent(ctx context.Context, remotePath string) erro cur := c.basePrefix for _, p := range parts { cur = path.Join(cur, p) - mkurl := fmt.Sprintf("%s%s", c.baseURL, cur) + var mkurl string + if cur == "" || cur == "/" { + mkurl = fmt.Sprintf("%s/%s", c.baseURL, url.PathEscape(p)) + } else { + mkurl = fmt.Sprintf("%s%s", c.baseURL, cur) + } req, _ := http.NewRequestWithContext(ctx, "MKCOL", mkurl, nil) if c.user != "" { req.SetBasicAuth(c.user, c.pass)