アップロードしたファイルを保存する処理のサンプルが全然見つからなくて苦労した。
やはりこういう新しい技術を使う時はソースを読まねばならんか。
ここでサンプル発見。助かりました。
http://d.hatena.ne.jp/SumiTomohiko/20070126/1169768661
また、画像のサイズを変更したりできるらしい、こちらのライブラリのPhotoFieldというのをImageFieldの代わりに使ってみる。
http://www.verdjn.com/wiki/PhotoField
まだアップロードできることを確認しただけだけども、メモしておこう。
models.py
from django.db import models from verdjnlib.fields import PhotoField class Photo(models.Model): image = PhotoField("写真", upload_to='photos', height=1024, width=1024)
upload_test.html
... <form action="/picture/upload/" method="POST" enctype="multipart/form-data"> 写真をアップロード <input type="file" name="image_file" /> <input type="submit" value="アップロードする" /> </form> ...
views.py
from django.shortcuts import render_to_response from django.template import RequestContext from test.main.models import Photo def picture_upload(request): if request.method == "POST": post_data = request.POST post_data.update(request.FILES) photo = Photo() image_file = post_data["image_file"] if image_file: filename = image_file["filename"] photo.image = filename photo.save_image_file(filename, image_file["content"]) photo.save() message = "アップロードを完了しました" else: message = "アップロードに失敗しました" else: message = "アップロードに失敗しました" return render_to_response('complete.html', {'message': message}, context_instance=RequestContext(request))
次は、サムネイル用画像保存処理やら、入力チェックを追加したい。
画像を表示する処理も作らねば。