2013-01-10 11 views
11

メディアファイルにS3を使用する私のdjangoプロジェクトでsorlサムネイルを使用すると、非常に奇妙なエラーが発生します。私はこの回答https://stackoverflow.com/a/12848650/538191で指摘された設定をして、実際に私の他のすべてのメディアファイルが正しく生成されています。Django Sorlで間違ったURL Amazon S3でサムネイル

しかし、イメージのため、私はこの

https://he-s3.s3.amazonaws.com/cache/6f/cb/6fcb83175cb63f754fba9facec5dda7f.jpg?Signature=tgDEXyRV3gl3QtK%2BvwliqAtWqpM%3D&Expires=1357853609&AWSAccessKeyId=AKIAJLE6MUHDYS3HN6YQ

のようなURLを取得していますSORLサムネイルを生成し、その画像のURLにS3のストレージ・パスを追加するため、問題は奇妙ですが、そのは/メディアを追加しません/その間。あなたは

https://he-s3.s3.amazonaws.com/media/cache/6f/cb/6fcb83175cb63f754fba9facec5dda7f.jpg

をチェックすると、画像は実際には存在しますが、URLが間違って生成されているので、私は壊れた画像を取得しています。設定ファイルでは、私はs3botoを使用してDEFAULT_FILE_STORAGEを宣言しているし、それは私がメディアを含まないSORLサムネイル画像にパスをする理由を理解することはできない

S3_URL = 'http://he-s3.s3-website-ap-southeast-1.amazonaws.com' 
MEDIA_URL = S3_URL + '/media/' 

含まれています。

何か助けていただければ幸いです。

更新

代わりの解決されているが、問題は、実際に配合しました。私がしたことは、サムネイルでKVStoreをクリアし、すべてのデータベースがクリアされたことでした。私は問題が解決したと思ったのでうれしかった、今私は正しいURLを得ていた。しかし、私はページをリフレッシュし、再び私は間違ったURLを得ていました。何が起こっているのか分かりません。サムネイルDBをクリアすると、間違ったURLが表示された後、正しいURLが一度表示されます。

+1

最初は安全なURLです。まずAWS_S3_SECURE_URLSの設定がFalseか、AWS_S3_CUSTOM_DOMAINの設定が –

+1

に設定されていることを確認してください。あなたのDEFAULT_FILE_STORAGEがS3として設定されている場合は、MEDIA_URL = '/ media /'にすることができます。 AWS設定AWS_LOCATION = '/ media /'を追加してください。 これはあなたの問題を解決すると思います。 – chhantyal

答えて

28

私はあなたがこのようなものを使用していることを賭ける:

MediaS3BotoStorage = lambda: S3BotoStorage(location='media') 

それはクラス名を使用してキャッシュに格納クラスをシリアライズしかし、これはSORLサムネイルで問題が発生します。後でデシリアライズすると、locationパラメータなしでS3BotoStorage()としてインスタンス化されます。だからこそ初めてのことですが、後で失敗します。

あなたが代わりに工場の本格的なクラスを使用して、それを修正することができます:

class MediaS3BotoStorage(S3BotoStorage): 
    location = 'media' 

希望に役立ちます!

+1

ありがとう!私の日を救った! –

+1

大変感謝します:) –

+0

boto3 == 1.4.3で2017年にこの問題が発生した場合は、代わりにMediaRootS3BotoStorageを使用する方がよいでしょう。 –

関連する問題