2016-08-05 2 views
0

Я использую S3 хранение файлов через хранилище Джанго-хранилище Boto на Python 3. При попытке загрузить файл, я получаю эту ошибку:Джанго Хранилище Boto Bad Digest

boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request 
<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>BadDigest</Code> 
<Message>The Content-MD5 you specified did not match what we received.</Message> 
... 

Файла Я пытаюсь для сохранения - файл, загружаемый с запросами. Суть его заключается в следующем:

import requests 
from django.core.files.base import ContentFile 

response = requests.get("http://example.com/some_file.pdf") 
document_contents = ContentFile(response.text) 
my_model.save("filename", document_contents) 

Что я делаю неправильно?

ответ

0

Смотрите эту уместные вопросы Boto: https://github.com/boto/boto/issues/2868

Boto имеет некоторые проблемы с кодировками строк в Python3. Если вы знаете кодировку, вы Использование response.content вместо того response.text исправляет проблему:

document_contents = ContentFile(response.content) 
0

У меня была аналогичная проблема.

Я перешел на boto3 и двигатель хранения до.

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 

Наконец, я также должен был преобразовать содержимое в двоичный с помощью .encode ('UTF-8')

my_model.save("filename", document_contents.encode('uft-8')) 
Смежные вопросы