我使用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。任何帮助将不胜感激。