Uploading a local file containing a plus `+` character to WebDAV fails

What is the problem you are having with rclone?

Uploading a local file containing a plus + character to WebDAV fails.

Run the command 'rclone version' and share the full output of the command.

rclone v1.61.1-DEV
- os/version: gentoo 2.9 (64 bit)
- os/kernel: 5.15.80-gentoo (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.19.4
- go/linking: dynamic
- go/tags: none

Which cloud storage system are you using? (eg Google Drive)

DFS via WebDAV. Probably some rather old Microsoft implementation.

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone copy -vvv --retries 1 --dump headers,responses /tmp/test.txt 'dfs:Projects/FOO-BAR/Indico Import/' --log-file /tmp/rclone-test-ok.txt
rclone copy -vvv --retries 1 --dump headers,responses /tmp/test+foo.txt 'dfs:Projects/FOO-BAR/Indico Import/' --log-file /tmp/rclone-test-plus-failed.txt

The rclone config contents with secrets removed.

[dfs]
type = webdav
url = https://dfs.cern.ch/dfs
vendor = other
user = XXX
pass = XXX

A log from the command with the -vv flag

Successful one
2023/01/27 12:18:56 DEBUG : rclone: Version "v1.61.1-DEV" starting with parameters ["rclone" "copy" "-vvv" "--retries" "1" "--dump" "headers,responses" "/tmp/test.txt" "dfs:Projects/FOO-BAR/Indico Import/" "--log-file" "/tmp/rclone-test-ok.txt"]
2023/01/27 12:18:56 DEBUG : Creating backend with remote "/tmp/test.txt"
2023/01/27 12:18:56 DEBUG : Using config file from "/home/adrian/.config/rclone/rclone.conf"
2023/01/27 12:18:56 DEBUG : fs cache: adding new entry for parent of "/tmp/test.txt", "/tmp"
2023/01/27 12:18:56 DEBUG : Creating backend with remote "dfs:Projects/FOO-BAR/Indico Import/"
2023/01/27 12:18:56 DEBUG : found headers: 
2023/01/27 12:18:56 DEBUG : You have specified to dump information. Please be noted that the Accept-Encoding as shown may not be correct in the request and the response may not show Content-Encoding if the go standard libraries auto gzip encoding was in effect. In this case the body of the request will be gunzipped before showing it.
2023/01/27 12:18:56 DEBUG : fs cache: renaming cache item "dfs:Projects/FOO-BAR/Indico Import/" to be canonical "dfs:Projects/FOO-BAR/Indico Import"
2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : HTTP REQUEST (req 0xc000a78400)
2023/01/27 12:18:56 DEBUG : PROPFIND /dfs/Projects/FOO-BAR/Indico%20Import/test.txt HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Authorization: XXXX
Depth: 1
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : HTTP RESPONSE (req 0xc000a78400)
2023/01/27 12:18:56 DEBUG : HTTP/2.0 404 Not Found
Content-Length: 1245
Content-Type: text/html
Date: Fri, 27 Jan 2023 11:18:55 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>404 - File or directory not found.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>404 - File or directory not found.</h2>
  <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
 </fieldset></div>
</div>
</body>
</html>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : test.txt: Need to transfer - File not found at Destination
2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : HTTP REQUEST (req 0xc0005ee200)
2023/01/27 12:18:56 DEBUG : MKCOL /dfs/Projects/FOO-BAR/Indico%20Import/ HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Authorization: XXXX
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : HTTP RESPONSE (req 0xc0005ee200)
2023/01/27 12:18:56 DEBUG : HTTP/2.0 405 Method Not Allowed
Content-Length: 1293
Allow: COPY, PROPFIND, DELETE, MOVE, PROPPATCH, LOCK, UNLOCK
Content-Type: text/html
Date: Fri, 27 Jan 2023 11:18:55 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>405 - HTTP verb used to access this page is not allowed.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>405 - HTTP verb used to access this page is not allowed.</h2>
  <h3>The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access.</h3>
 </fieldset></div>
</div>
</body>
</html>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : HTTP REQUEST (req 0xc000276700)
2023/01/27 12:18:56 DEBUG : PUT /dfs/Projects/FOO-BAR/Indico%20Import/test.txt HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Content-Length: 0
Authorization: XXXX
Content-Type: text/plain; charset=utf-8
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : HTTP RESPONSE (req 0xc000276700)
2023/01/27 12:18:56 DEBUG : HTTP/2.0 201 Created
Content-Length: 0
Date: Fri, 27 Jan 2023 11:18:55 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : HTTP REQUEST (req 0xc0005ee400)
2023/01/27 12:18:56 DEBUG : PROPFIND /dfs/Projects/FOO-BAR/Indico%20Import/test.txt HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Authorization: XXXX
Depth: 1
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:18:56 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 DEBUG : HTTP RESPONSE (req 0xc0005ee400)
2023/01/27 12:18:56 DEBUG : HTTP/2.0 207 Multi-Status
Content-Length: 921
Content-Type: text/xml
Date: Fri, 27 Jan 2023 11:18:55 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<?xml version="1.0" encoding="utf-8"?><D:multistatus xmlns:D="DAV:"><D:response><D:href>https://dfs.cern.ch/dfs/Projects/FOO-BAR/Indico%20Import/test.txt</D:href><D:propstat><D:status>HTTP/1.1 200 OK</D:status><D:prop><D:getcontenttype>text/plain</D:getcontenttype><D:getlastmodified>Fri, 27 Jan 2023 11:18:56 GMT</D:getlastmodified><D:lockdiscovery/><D:ishidden>0</D:ishidden><D:supportedlock><D:lockentry><D:lockscope><D:exclusive/></D:lockscope><D:locktype><D:write/></D:locktype></D:lockentry><D:lockentry><D:lockscope><D:shared/></D:lockscope><D:locktype><D:write/></D:locktype></D:lockentry></D:supportedlock><D:getetag>W/"def41d254132d91:0"</D:getetag><D:displayname>test.txt</D:displayname><D:getcontentlanguage/><D:getcontentlength>0</D:getcontentlength><D:iscollection>0</D:iscollection><D:creationdate>2023-01-27T11:18:56.112Z</D:creationdate><D:resourcetype/></D:prop></D:propstat></D:response></D:multistatus>
2023/01/27 12:18:56 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:18:56 INFO  : test.txt: Copied (new)
2023/01/27 12:18:56 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         0.0s

2023/01/27 12:18:56 DEBUG : 5 go routines active
Failed one
2023/01/27 12:19:01 DEBUG : rclone: Version "v1.61.1-DEV" starting with parameters ["rclone" "copy" "-vvv" "--retries" "1" "--dump" "headers,responses" "/tmp/test+foo.txt" "dfs:Projects/FOO-BAR/Indico Import/" "--log-file" "/tmp/rclone-test-plus-failed.txt"]
2023/01/27 12:19:01 DEBUG : Creating backend with remote "/tmp/test+foo.txt"
2023/01/27 12:19:01 DEBUG : Using config file from "/home/adrian/.config/rclone/rclone.conf"
2023/01/27 12:19:01 DEBUG : fs cache: adding new entry for parent of "/tmp/test+foo.txt", "/tmp"
2023/01/27 12:19:01 DEBUG : Creating backend with remote "dfs:Projects/FOO-BAR/Indico Import/"
2023/01/27 12:19:01 DEBUG : found headers: 
2023/01/27 12:19:01 DEBUG : You have specified to dump information. Please be noted that the Accept-Encoding as shown may not be correct in the request and the response may not show Content-Encoding if the go standard libraries auto gzip encoding was in effect. In this case the body of the request will be gunzipped before showing it.
2023/01/27 12:19:01 DEBUG : fs cache: renaming cache item "dfs:Projects/FOO-BAR/Indico Import/" to be canonical "dfs:Projects/FOO-BAR/Indico Import"
2023/01/27 12:19:01 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:01 DEBUG : HTTP REQUEST (req 0xc000ab1300)
2023/01/27 12:19:01 DEBUG : PROPFIND /dfs/Projects/FOO-BAR/Indico%20Import/test+foo.txt HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Authorization: XXXX
Depth: 1
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:19:01 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:01 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:01 DEBUG : HTTP RESPONSE (req 0xc000ab1300)
2023/01/27 12:19:01 DEBUG : HTTP/2.0 404 Not Found
Content-Length: 1245
Content-Type: text/html
Date: Fri, 27 Jan 2023 11:19:01 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>404 - File or directory not found.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>404 - File or directory not found.</h2>
  <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
 </fieldset></div>
</div>
</body>
</html>
2023/01/27 12:19:01 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:01 DEBUG : test+foo.txt: Need to transfer - File not found at Destination
2023/01/27 12:19:01 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:01 DEBUG : HTTP REQUEST (req 0xc000152300)
2023/01/27 12:19:01 DEBUG : MKCOL /dfs/Projects/FOO-BAR/Indico%20Import/ HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Authorization: XXXX
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:19:01 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:01 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:01 DEBUG : HTTP RESPONSE (req 0xc000152300)
2023/01/27 12:19:01 DEBUG : HTTP/2.0 405 Method Not Allowed
Content-Length: 1293
Allow: COPY, PROPFIND, DELETE, MOVE, PROPPATCH, LOCK, UNLOCK
Content-Type: text/html
Date: Fri, 27 Jan 2023 11:19:01 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>405 - HTTP verb used to access this page is not allowed.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>405 - HTTP verb used to access this page is not allowed.</h2>
  <h3>The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access.</h3>
 </fieldset></div>
</div>
</body>
</html>
2023/01/27 12:19:01 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:01 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:01 DEBUG : HTTP REQUEST (req 0xc000382600)
2023/01/27 12:19:01 DEBUG : PUT /dfs/Projects/FOO-BAR/Indico%20Import/test+foo.txt HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Content-Length: 0
Authorization: XXXX
Content-Type: text/plain; charset=utf-8
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:19:01 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:01 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:01 DEBUG : HTTP RESPONSE (req 0xc000382600)
2023/01/27 12:19:01 DEBUG : HTTP/2.0 404 Not Found
Content-Length: 1245
Content-Type: text/html
Date: Fri, 27 Jan 2023 11:19:01 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>404 - File or directory not found.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>404 - File or directory not found.</h2>
  <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
 </fieldset></div>
</div>
</body>
</html>
2023/01/27 12:19:01 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:02 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:02 DEBUG : HTTP REQUEST (req 0xc000ab0000)
2023/01/27 12:19:02 DEBUG : DELETE /dfs/Projects/FOO-BAR/Indico%20Import/test+foo.txt HTTP/1.1
Host: dfs.cern.ch
User-Agent: rclone/
Authorization: XXXX
Referer: https://dfs.cern.ch/dfs/
Accept-Encoding: gzip

2023/01/27 12:19:02 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2023/01/27 12:19:02 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:02 DEBUG : HTTP RESPONSE (req 0xc000ab0000)
2023/01/27 12:19:02 DEBUG : HTTP/2.0 404 Not Found
Content-Length: 1245
Content-Type: text/html
Date: Fri, 27 Jan 2023 11:19:02 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>404 - File or directory not found.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>404 - File or directory not found.</h2>
  <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
 </fieldset></div>
</div>
</body>
</html>
2023/01/27 12:19:02 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2023/01/27 12:19:02 ERROR : test+foo.txt: Failed to copy: 404 Not Found
2023/01/27 12:19:02 ERROR : Attempt 1/1 failed with 1 errors and: 404 Not Found
2023/01/27 12:19:02 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Errors:                 1 (retrying may help)
Elapsed time:         1.0s

2023/01/27 12:19:02 DEBUG : 6 go routines active
2023/01/27 12:19:02 Failed to copy: 404 Not Found

hello and welcome to the forum,

i was able to upload a file with +
the server is based on sabre/dav - https://sabre.io/

root@wsl01:~/zork# rclone copy test+foo.txt webdav:zork -vv
DEBUG : rclone: Version "v1.60.1" starting with parameters ["rclone" "copy" "test+foo.txt" "webdav:zork" "-vv"]
DEBUG : Creating backend with remote "test+foo.txt"
DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
DEBUG : fs cache: adding new entry for parent of "test+foo.txt", "/root/zork"
DEBUG : Creating backend with remote "webdav:zork"
DEBUG : found headers:
DEBUG : test+foo.txt: Need to transfer - File not found at Destination
INFO  : test+foo.txt: Copied (new)
INFO  :
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         1.0s

The webdav protocol is certainly capable of uploading files with + in. In fact the integraton tests test this against 3 different webdav servers. So I suspect a problem with the implementation.

+ means something in URLs so it is a common problem

Unfortunately we don't have an encoding for + which would make a work-around.

You could try using %2B instead of the + that might work.

Sure, my workaround was indeed to simply replace + with _ in the filenames. My point was that maybe this could be handled by rclone in case it's e.g. an incompatibility with some old microsoft webdav implementation.

Rclone has its encoding system for exactly this purpose. Unfortunately it doesn't have + as that's valid on all backends at the moment.

It could be added though

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.