将 S3 对象名称转换为 S3 对象 url (python)

Convert S3 object name into S3 object url (python)

我上传了一张名为

的图片
'Pepper, Pig (#PP).jpg'

到我的 S3 存储桶。我注意到AWS创建的对应对象url是:

'Pepper#2C+Pig+(%23PP.jpg)'

换句话说,它将所有空格转换为+并将逗号和哈希转换为十六进制。它不会更改括号。

这种编码有专门的名称吗?有什么方法可以将字符串转换成这个 AWS 对象 url 命名约定?

正如 John 在评论中指出的那样,AWS 标题是 url 编码的,因此在 python 中,因此要将 S3 object 名称转换为 S3 object url,我们可以直接使用:

import urllib
object_name = 'Pepper, Pig (#PP).jpg'
object_url = urllib.parse.quote_plus(title)

结果是:

'Pepper%2C+Pig+%28%23PP%29.jpg'

在 S3 中引用此 object 时效果完美。