Django 1.8からDjango 1.10にアップグレードされましたが、いくつか明らかな課題がありましたが、唯一の苦労はS3への画像アップロードです。 Djangoをアップグレードしている間に、私はまた、Boto & PILをアップグレードすることを余儀なくされました。Django Django 1.10へのアップグレード後に画像がAWS S3にアップロードされない1.10
しかし、元の画像は依然として要求されたバケット(オリジナル)に正しくアップロードされますが、サムを作成して別のバケットに保存する保存機能は機能しなくなりました。ジャンゴ/後のBoto/PILがアップグレードするまでここ
が正常に働いていた私のコードです:
class Photo(models.Model):
...
def save(self, *args, **kwargs):
super(Photo, self).save(*args, **kwargs)
self.create_avatar_thumb()
def create_avatar_thumb(self):
import os
from PIL import Image
from django.core.files.storage import default_storage as storage
if not self.filename:
return ""
file_path = self.filename.name
filename_base, filename_ext = os.path.splitext(file_path)
original_file_path = "%s%s" % (filename_base, filename_ext)
xm_file_path = original_file_path.replace('originals/', 'xm/')
if storage.exists(xm_file_path):
return "exists"
# resize the original image to xs
f = storage.open(file_path, 'r')
image = Image.open(f)
print image # example 1
xm_size = 40, 40
image.thumbnail(xm_size, Image.ANTIALIAS)
f_thumb = storage.open(xm_file_path, "w")
print f_thumb # example 2
image.save(f_thumb, quality=100)
f_thumb.close()
私のテスト:
私はこのスクリプトを実行しているエラーを取得していません。
2つの観測:私はprint
を実行すると、1は2を二回印刷しprint
上#exampleう#exampleが、私はS3使用して枕の.save()
方法に問題があったので、私は通過した空
お返事ありがとうございます。私は間違いなくそれを試してみます。実際には、枕4.0はDjango 1.8で正常に動作しています。バージョン1.1.8とバージョン1.2.0の間で、ジャンゴストレージのいくつかの変更がありました。 django-1.8よりも新しいものを使用しているときにアップロードがDjango 1.8で機能しなくなったためです。django-1.orをdjango 1.10で使用すると、 'get_available_name()に予期しないキーワード引数 'max_length''エラーが出ますdjango-storageパッケージの中にあるので上書きすることはできません。 – WayBehind