亚马逊S3网址编码

7
如果我有一个文件名为
a'd1 & "[tttt]" + 'sq.jpg
当上传到亚马逊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 

有没有办法确定S3需要的所有规则?正常的javascript编码(使用encodeURI或甚至encodeURIComponent)不起作用。


当这个被上传到Amazon S3时,它会被转换成这个。你是如何上传的?很可能你使用的工具有bug。 - Ryan Parman
为什么你说encodeURIComponent不起作用?就我所看到的,它与你描述的唯一区别是encodeURIComponent将空格编码为%20。然而,%20在s3中也可以使用,所以我不认为使用它会有任何问题。 - Andy
1个回答

6

以下内容并非权威来源,但已满足我的要求:encodeS3URI

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

S3会用+替换文件路径中的空格,因此最好在进行任何其他字符串替换之前进行URI编码。


3
再次强调一下,如果您上传带有空格的内容,它会变成+,如果您稍后再上传带有+的内容,它会将其更改为%2B。 - Morgeth888

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接