boto'generation_url'的问题以及使用fineuploader在S3中存储unicode元数据

时间:2014-08-22 23:21:26

标签: python unicode amazon-s3 boto fine-uploader

我使用FineUploader 5.0.1并遇到上传具有unicode文件名的文件的问题。文件名以x-amz-meta-qqfilename编码,例如:Test%20%E2%80%93%20My%20File.pdf。当我尝试在密钥上调用generate_url时,它在boto中失败:

    return True, k.generate_url(expires_in)
  File "/opt/webapp/sampleapp/lib/python2.6/site-packages/boto/s3/key.py", line 704, in generate_url
    version_id)
  File "/opt/webapp/sampleapp/lib/python2.6/site-packages/boto/s3/connection.py", line 408, in generate_url
    expires, self.provider)
  File "/opt/webapp/sampleapp/lib/python2.6/site-packages/boto/utils.py", line 122, in canonical_string
    interesting_headers[lk] = str(headers[key]).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 13: ordinal not in range(128)

如果这是精细装载者或者是错误的,那么我无法解决问题。倾向于后者 - 我假设编码的文件名在密钥的元数据中是有效的吗?

问题是元数据在boto的一侧被解码(即成为{'x-amz-meta-qqfilename': u'Test \u2013 My File.pdf'}),但是generate_url方法将此元数据复制到标题中,然后期望所有内容都是ascii。

奇怪的是,虽然我似乎无法找到其他人有类似的问题让我想知道我做错了什么 - 但是我没有做任何特别的事情,只是使用带有次要gui修改的fineuploader和标准的boto版本2.32.1。任何帮助将不胜感激。

0 个答案:

没有答案