Amazon S3 URL Encoding

amazon-s3, url-encoding

Solution

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

Problem

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

Original source