django アプリケーションで、Amazon s3 にアップロードされたファイルの名前を持つ POST 変数を受け取りました。
しかし、Unicode でキーを受け取り、キーを boto と amazon s3 に渡すと、何も返されません。ただし、バケットを boto でリストし、リストからキーを取得すると、Amazon s3 は期待されるオブジェクトを返します。
だから私の質問は、どのようにユニコードキー名をbotoが持っているキーの同じエンコーディングに変換して、Amazonが私にオブジェクトを与えることができるかということです.
boto キーのエンコーディングを知るにはどうすればよいですか?
洞察に感謝します。これは私を夢中にさせています。スラッシュを追加する前はすべて正常に機能していましたが、なぜ違いが生じるのかわかりません。
端末からのコードは次のとおりです。
>>> 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 文字列を渡すと問題なく動作します。変換する必要はありません。正しいキー名を検索していることを確認してください。
サーバー側でキー名を受け取ったばかりなので、正しいと思いましたが、アプリ側で1つの名前で保存してから、新しく作成された名前(1分違う)をサーバーに送信しているようです。