2016-08-05 6 views
0

私はファイルをアップロードしようとすると、私は、私はこのエラーを取得し、Pythonの3のジャンゴ・ストレージののbotoストレージを通じてS3のファイルストレージを使用しています:ジャンゴストレージ]後のBotoバート・ダイジェスト

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.text修正問題の代わりにresponse.contentを使用する:

document_contents = ContentFile(response.content) 
0

私は同様の問題がありました。

boto3とストレージエンジンをtoに変更しました。

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 

最後に私も.encode( 'UTF-8')を使用してバイナリにコンテンツを変換する必要がありました

my_model.save("filename", document_contents.encode('uft-8')) 
関連する問題