Reputation: 5709
If I have a file name that is
a'd1 & "[tttt]" + 'sq.jpg
When this gets uploaded to Amazon S3, it gets converted to this
a'd1 & %22[tttt]%22 + 'sq.jpg
So the double quotes are URL encoded and the filename itself is changed.
The file has to be fetched using the encoded URL
a%27d1+%26+%2522%5Btttt%5D%2522+%2B+%27sq.jpg
So the encoding rules seem to be:
": %2522 (double encoded)
Space: +
&: %26
[: %5B
]: %5D
+: %2B
Is there a way to determine all the rules that S3 requires? Normal javascript encoding with (encodeURI or even encodeURIComponent) won't work
Upvotes: 9
Views: 18233
Reputation: 830
This is not from a definitive source, but it has worked for my requirements: encodeS3URI
It replaces the following characters +!"#$&'()*+,:;=?@
S3 replaces spaces in filepaths with +
, so its best to do the URI encoding before any further string replacements
Upvotes: 9