gist

2012年5月22日火曜日

フォームデータを解析する formidable を使ってみた

formidable は、受信したフォームデータを解析し、オブジェクトに変換するパッケージです。connectパッケージで使われています。

$ npm install formidable

CoffeeScript

formidable = require 'formidable'
http = require 'http'
util = require 'util'

http.createServer (req, res)->
 if req.url is '/upload' and req.method.toLowerCase() is 'post'
  form = new formidable.IncomingForm()
  form.parse req, (err, fields, files)->
   res.writeHead 200, {'content-type':'text/plain; charset=UTF-8'}
   res.write 'received uploaded\n\n'
   res.end util.inspect {fields: fields, files: files}
  return

 res.writeHead 200, {'content-type': 'text/html'}
 res.end """
 <html><head><meta charset="utf-8"></head>
 <body>
 <form action="/upload" enctype="multipart/form-data" method="post">
 <input type="text" name="title"><br>
 <input type="file" name="upload" multiple="multiple"><br>
 <input type="submit" name="Upload">
 </form>
 </body>
 """
.listen 3000

new formidable.IncomingForm() でインスタンス化し、parse 関数で解析を開始します。コールバックの第2引数 fieldsには、フォームデータのキー(inputタグのname属性)と値(value値)のオブジェクトが配列で入ってきます。第3引数 files には、アップロードされたデータの情報が入ってきます。

実行します。

$ coffee sample.coffee

ブラウザで http://localhost:3000 にアクセスします。

テキストフィールドに適当な文字列を入力し、適当なファイルを選択して、送信します。

特にファイル情報を簡単に、しかも高速に取得できる点で、とても便利なパッケージです。1万以上のパッケージの中で57のパッケージに使われています。

0 件のコメント: