首页 > 解决方案 > 将 S3 对象名称转换为 S3 对象 url (python)

问题描述

我上传了一张名为

'Pepper, Pig (#PP).jpg'

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

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

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

这种类型的编码有特殊的名称吗?有没有办法将字符串转换成这个 AWS 对象 url 命名约定?

标签: pythonamazon-web-servicesamazon-s3hexurlencode

解决方案


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

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

结果是:

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

与在 S3 中引用此对象时一样完美。


推荐阅读