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 件のコメント:
コメントを投稿