Amazon S3 URL编码

sat*_*sat 5 amazon-s3 url-encoding

如果我有一个文件名是

a'd1 & "[tttt]" + 'sq.jpg

将其上传到Amazon S3后,它将转换为

a'd1 & %22[tttt]%22 + 'sq.jpg

因此,双引号是URL编码的,文件名本身也已更改。

必须使用编码的URL提取文件

a%27d1+%26+%2522%5Btttt%5D%2522+%2B+%27sq.jpg 因此编码规则似乎是:

": %2522  (double encoded)
Space: + 
&: %26 
[: %5B
]: %5D
+: %2B 
Run Code Online (Sandbox Code Playgroud)

有没有办法确定S3要求的所有规则?使用(encodeURI甚至encodeURIComponent)的普通javascript编码将无法正常工作

ami*_*rgo 5

这不是来自明确的来源,但它满足了我的要求:encodeS3URI

它替换以下字符 +!"#$&'()*+,:;=?@

S3 将文件路径中的空格替换为+,因此最好在任何进一步的字符串替换之前进行 URI 编码

  • 只是为了再次强调这一点,如果您使用空格上传它,它会更改为 + 如果您稍后返回并使用 + 上传它,它会将其更改为 %2B (3认同)