webdav_client icon indicating copy to clipboard operation
webdav_client copied to clipboard

Encode the pound/hash/number symbol (#)

Open Ansis100 opened this issue 1 year ago • 2 comments

The URL code for # is %23. When a WebDAV server receives a URL containing a literal #, it ignores everything after the symbol (e.g. http://host.com/file#1234.txt becomes http://host.com/file), presumably because # is reserved for HTML anchors.

Now, webdav_client uses Uri.encodeFull to encode URLs. From the docs:

All characters except uppercase and lowercase letters, digits and the characters !#$&'()*+,-./:;=?@_~ are percent-encoded.

This means that if any method from webdav_client receives a file path containing the symbol #, it will not encode it and the server will receive a truncated request URL, which results in unexpected behaviour.

Ansis100 avatar Aug 16 '24 09:08 Ansis100

Only just now realized that this is a duplicate of #47 (after running it through Google Translate). I'd suggest keeping it open so others don't make the same mistake as me.

Ansis100 avatar Aug 21 '24 06:08 Ansis100

Some defects will be fixed or refactored in the later stage. At present, I am busy. Thank you very much

flymzero avatar Aug 22 '24 10:08 flymzero