/ / Djangoを使ってアップロードした画像をS3に保存する - python、django、amazon-s3、boto

Djangoでアップロードされた画像をS3に保存する - python、django、amazon-s3、boto

botoを使ってS3に画像を保存しようとしています。 ファイルは保存されますが、正しく保存されたようには見えません。S3でファイルを開こうとすると、壊れた画像アイコンが表示されるだけです。ここで使用しているコードは次のとおりです。

# Get and verify the file
file = request.FILES["file"]
try:
img = Image.open(file)
except:
return api.error(400)

# Determine a filename
filename = file.name

# Upload to AWS and register
s3 = boto.connect_s3(aws_access_key_id=settings.AWS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY)
bucket = s3.get_bucket(settings.AWS_BUCKET)
f = bucket.new_key(filename)
f.set_contents_from_file(file)

最後の行を次のように置き換えてみました。

f.set_contents_from_string(file.read())

しかし、それだけではうまくいきませんでした。私はdjango-storageにバックエンドがあることに気づいていますが、このモデルは複雑なので、 私はdjango-storagesでフォームを使いたくありません。

回答:

回答№1は1

あなたは、 ジャンゴ - ストレージ 使用する boto 内部的に。

デフォルトを交換することができます FileSystemStorageまたは、新しいストレージインスタンスを作成して手動でファイルを保存します。あなたのコード例に基づいて、私はあなたが本当に最初の選択肢に行きたがっていると思います。

djangoの使用を検討してください Form リクエストに直接アクセスする代わりに。