首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转换unicode密钥名称,以便amazon-s3能够识别它?

如何转换unicode密钥名称,以便amazon-s3能够识别它?
EN

Stack Overflow用户
提问于 2011-04-05 05:17:38
回答 1查看 1.6K关注 0票数 2

在django应用程序中,我收到一个POST变量,其中包含上传到亚马逊s3中的文件的名称。

但我收到的密钥是unicode格式的,当我将密钥传递给boto和amazon s3时,什么也没有返回。但是,如果我使用boto列出存储桶,并从列表中获取密钥,那么亚马逊s3将返回预期的对象。

所以我的问题是,如何将我的unicode键名称转换为boto所具有的键的相同编码,以便amazon将对象提供给我。

我怎么知道boto密钥是用什么编码的?

非常感谢你的见解,这篇文章快把我逼疯了。在我们添加正斜杠之前,一切都运行得很好,我看不出这会有什么不同。

以下是来自终端的代码:

代码语言:javascript
复制
>>> unicode_key_name
u'missionuploads/tom-mission-4d8f9da9122ac21c17000002-4_4_11_9_38_PM.jpg'
>>> boto_key_name
'missionuploads/tom-mission-4d8f9da9122ac21c17000002-4_4_11_9_37_PM.jpg'
>>> len(unicode_key_name)
70
>>> len(boto_key_name)
70
>>> unicode_key = bucket.get_key(unicode_key_name.encode('utf-8'))
>>> unicode_key
>>> unicode_key = bucket.get_key(unicode_key_name.encode('ascii'))
>>> unicode_key
>>> boto_key = bucket.get_key(boto_key_name)
>>> boto_key
<Key: user.media.eu,missionuploads/tom-mission-4d8f9da9122ac21c17000002-4_4_11_9_37_PM.jpg>

-编辑

传递unicode字符串可以很好地工作,不需要转换它,只需确保您正在搜索正确的键名!

由于我刚在服务器端收到密钥名称,我认为它是正确的,但错误似乎是在应用程序端,用一个名称保存,然后发送一个新创建的名称(一分钟不同)到服务器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-05 05:25:23

'37''38'是不同的字符串。当您使用正确的值时,它可能会工作得很好。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5544465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档