- 2007-04-20 (金) 1:24
- Django
画像アップロードを作りたくて、Django newformsのImageFieldを使ってみた。
ファイル名周りでいろいろ問題がありそうだけど、ユーザーがアップしたファイル名はどうせ使わない仕様のつもりだったので、まーいいかと思って試した。
どうやらリリースには含まれていないので、ここからパッチを入手。
#3297 (newforms: Implement FileField and ImageField) - Django Code - Trac
現時点で最新のパッチを使った。
djangoと同じディレクトリ(ここでは$HOME/local/lib/python/site-package)にパッチファイルを置いて以下のコマンドを実行
patch -p0 < 4921-newforms-file-imagefield.diff
フォームの定義はこんな感じ
from django import newforms as forms
class ImageForm(forms.Form):
image = forms.fields.ImageField(widget=forms.FileInput(), required=True)
次に実際にファイルを読み込んでサムネイルを保存するところのサンプル。
これを少し改造していけばそれなりに動くものになるかな。
(微妙に省略していますが雰囲気はこんな感じ)
from cStringIO import StringIO
from PIL import Image
small_size = 200, 200
filepath = ‘/tmp/hoge/fuga.jpg’
post_data = request.POST or None
post_data.update(request.FILES) # 注意:ファイル情報はPOSTじゃなくってFILEに入るよ
form = ImageForm(post_data or None)
if form.is_valid():
form_data = form.clean_data
image = form_data['image']['content']
im_thumb = Image.open(StringIO(image))
im_thumb.thumbnail(small_size)
im_thumb.save(filepath)
[/code]
- Newer: PHPは本当にダメな言語なの?
- Older: [補足]さくらインターネット、CGIでDjangoを動かす
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.joyfullife.jp/archives/2007/04/20012425.php/trackback
- Listed below are links to weblogs that reference
- Django newformsのImageFieldを使う from 30からのBlog