В приложении django я получаю переменную POST с именем файла, загруженного в amazon s3.
Но я получаю ключ в юникоде, и когда я передаю ключ в boto и amazon s3, ничего не возвращается. Однако если я перечислю ведро с помощью boto и получу ключ из списка, то amazon s3 вернет ожидаемый объект.
Итак, мой вопрос: как я могу преобразовать свое имя в Unicode-ключе в ту же кодировку ключа, что и у 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>
-------- РЕДАКТИРОВАТЬ ----------
Передача строки в юникоде работает нормально, ее не нужно преобразовывать, просто убедитесь, что вы ищете правильное имя ключа!
Поскольку я только что получил имя ключа на стороне сервера, я предположил, что оно было правильным, но ошибка, по-видимому, связана с сохранением приложения под одним именем и последующей отправкой на сервер вновь созданного имени (отличающегося на одну минуту).