以下のような動作をする単純なWebサービスを作ろうと思います。
丁寧に(チュートリアル的に)方法を解説してくれているサイトや書籍があればお教えください。
1、Web formからファイルを選択してUpload、
2、ファイルの拡張子とサイズをチェックして、スタートボタンを表示
3、スタートボタンを押すとサーバーでコマンドを実行
(例えばImage magicによるjpeg画像の解析とExif読むソフトとperlによるファイル名への撮影日時の追加)
4、作成されたファイルをFTP等でUPし、リンクを表示する。
私のスキルはCgiはperlの掲示板のフォームを少し改造したことがある程度。コマンドはcygwinで画像関係のシェル書いたりしています(これをwebフォームから出力できるようにしたい)。サーバーは周りはApatchの動作確認程度でこれからです。
例はPerl等でも良いですが、これからPythonを勉強しようと思っていますので、できればPythonで、またサーバー周りの設定も書いてあると嬉しいです。
1.Pythonで作る簡易アップローダー
http://anopara.matrix.jp/2013/04/24/python%E3%81%A7%E4%BD%9C%E3%82%8B%E7%B0%A1%E6%98%93%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC/
2.Pythonでのファイル拡張子の取得方法
http://www.python-izm.com/contents/application/extension.shtml
3.FORMでACTIONを定義しておけばできます。
4.1でアップロードは完了しているので、FTPでアップロードし直す必要はありません。
コメント(2件)
適当に検索して貼り付けてあげてもいいけど、ポイント乞食みたいでいやなので、
大まかな流れだけコメントしておきます。
>1、Web formからファイルを選択してUpload、
この作業はブラウザから行うことなので、
サーバーに用意したperlやPython等で直接制御は出来ません。
(セキュリティの観点から、
サーバーからクライアントを直接操作できない仕様になっているのです。)
一例となりますが、
JAVAScript用のjQueryというライブラリと
http://jquery.com/
jQuery用のFine Uploaderというプラグインを組み合わせたりします。
http://fineuploader.com/
その他にもjQuery用のプラグインはまだまだあります。
http://lagoscript.org/jquery/upload
http://webdelog.info/2013/03/web/javascript/dropzonejs/
>2、ファイルの拡張子とサイズをチェックして、スタートボタンを表示
この作業もブラウザ上でおこなうほうが効率良いです。
前述の方法で可能です。
>3、スタートボタンを押すとサーバーでコマンドを実行
(例えばImage magicによるjpeg画像の解析とExif読むソフトとperlによるファイル名への撮影日時の追加)
>4、作成されたファイルをFTP等でUPし、リンクを表示する。
これらは流れが少し違いますし、
ブラウザ上からのアップロードはFTPではなくhttpリクエストです。
(前述のjQueryもhttpリクエストでサーバーに送信します。)
サーバーはブラウザからのリクエストに添付された画像を受け取ることになります。
apacheはCGIの仕組みを通じてperlやPythonなどに処理を画像を受け渡し、
あとはperlやPython側で好きに加工し、保存します。
1,2は見た目こだわらなければHTMLタグで代用できることなので、
まずは3,4から始めたほうがいいんじゃなかな?
CGI掲示板いじったことがあるなら、その掲示板の仕組みを洗いなおしたり、
画像掲示板のCGIの仕組みを洗いなおすだけで、3,4は理解できると思いますよ。
では、がんばって。
Pythonで画像を取り扱うライブラリというとPILですね。↓このサイトは分かりやすい。
http://www.geocities.jp/showa_yojyo/note/python-pil.html
exifの操作はexif.pyというモジュールがあるみたいです。使ったことないです。
http://meganehouser.hatenablog.com/entry/2012/01/09/214853
PythonのCGIは、GAEでも使われているwebappやwebapp2などがいいんじゃないでしょうか。チュートリアル的なものが日本語ではちょっと見当たりませんでしたが、GAEの解説記事がある程度参考になります。
https://developers.google.com/appengine/docs/python/gettingstarted/usingwebapp?hl=ja