画像をアップロードして、そのサムネイルを作成し、両方を S3 に保存しようとしています。ファイルがアップロードされた後、最初にS3にアップロードし、サムネイルを作成しようとしましたが、PILが画像を認識できないため機能しません。次に、元の画像をアップロードするよりも最初にサムネイルを作成すると、EOF が発生します。
Django では、アップロードされたファイルを 1 回だけ使用することを許可していると思います....どうすればよいか教えてください....よろしくお願いします
画像をアップロードして、そのサムネイルを作成し、両方を S3 に保存しようとしています。ファイルがアップロードされた後、最初にS3にアップロードし、サムネイルを作成しようとしましたが、PILが画像を認識できないため機能しません。次に、元の画像をアップロードするよりも最初にサムネイルを作成すると、EOF が発生します。
Django では、アップロードされたファイルを 1 回だけ使用することを許可していると思います....どうすればよいか教えてください....よろしくお願いします
ええと、質問をより具体的にする必要がありますが、同じことを行っており、ワークフローは次のとおりです。
1) request.FILES からのファイル アップロードでファイル ハンドルを取得し、それをローカル ファイルシステムのどこかに保存するため、ストリームで作業しません。これが問題の原因であると推測します。
2) FS 上の画像を操作したり、サイズ変更やサムネイル表示などを行うには、PIL (またはさらに良いことに、Pillow) を使用します。
3) Boto (http://boto.cloudhackers.com/en/latest/) を使用して S3 にアップロードします。これは、Boto を使用すると AWS の処理が不要になるためです。
それは非常に簡単で、うまく機能します
私はついにそれを理解しました。問題は、アップロードされたファイルが保存されるストリームであったため、ファイルを読み取るたびに EOF に到達することでした。
唯一かつ最良の方法は、ファイルを読み取るたびに seek(0) することです。
これは、django で他のファイルを操作するときにも必要です。