При попытке получить доступ к WebDav API nextcloud через WinSCP я столкнулся с несколькими проблемами с правильным использованием корневой папки, удаленного пути и т. д. Чтобы сэкономить время другим, вот рабочий код, который я придумал для загрузки файла в удаленная (общая) папка.
Уроки выучены:
- имя сервера предоставляется без протокола, это определяется SessionOptions.Protocol
- корневая папка не может быть пустой, должна быть не меньше "/"
- следующий облачный провайдер / конфигурация определяет корневой URL-адрес, поэтому «webdav» или «dav» после remote.php предопределены. Обычно вы можете увидеть его в левом нижнем углу при использовании веб-приложения nextcloud в разделе настроек.
- "files/user" или "files/username" не обязательно требуются - также определяются хостером/конфигурацией
- подключающийся пользователь должен иметь права доступа к данному каталогу, вы должны предоставить права доступа к файлам другим (при желании), предоставив FilePermissions в TransferOptions
Однако рабочего примера нет ни в WinSCP, ни в документации nextcloud, ни здесь найти нечего.