Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

ファイルのアップロード処理

Node.jsにおけるformの処理のうち、アップロード処理。formidableパッケージを利用すると便利みたいです。

インストール

インストールは以下のnpmコマンドでOK。

npm install formidable 

サンプル

サンプルは以下のとおり。

var http = require('http');
var util = require('util');
var formidable = require('formidable');

http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {

    var form = new formidable.IncomingForm();

    // アップロード先フォルダの指定
    form.uploadDir = 'c:/temp';
    form.parse(req, function(err, fields, files) {
      res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
      res.write('アップロード完了\n')
      res.write(util.inspect(fields));
      res.write('\n');
      res.write(util.inspect(files));
      res.end();
    });
    return;
  }

  res.writeHead(200, {'content-type': 'text/html;charset=utf-8'});
  res.end('<html>'+
          '<form action="/upload" enctype="multipart/form-data" method="post">'+
          'name : <input type="text" name="name"><br>'+
          'file : <input type="file" name="filename" multiple="multiple"><br>'+
          '<input type="submit" value="送信">'+
          '</form>'+
          '</html>'
         );

}).listen(8080);

/uploadへのPOST以外は、以下のformを表示します。

適当に文字列とファイルを指定して送信。指定したフォルダにファイルが格納されていることが確認できますので、あとは良きに計らえばOK的な感じでしょうか。

あんまりアジュっていませんけど、Azure SDK for Node.jsを使っているということでご勘弁。ちなみに、expressフレームワークにはformidableが組み込まれていますので、requireしなくてもよいですというか、それを知らずに使おうとしてハマったことは別の機会にでも。