Node.js

[node.js] querysting을 통한 form-data 파싱

behonestar 2016. 11. 30. 15:42

POST로 전달된 form-data는 아래의 포맷을 따른다.


------WebKitFormBoundarypx8jEvVTBCRPDUzM

Content-Disposition: form-data; name="foo"


John

------WebKitFormBoundarypx8jEvVTBCRPDUzM

Content-Disposition: form-data; name="bar"


123456789


querysting 모듈을 사용해서 key와 value를 추출하고, value의 불필요한 문자열은 정규식 치환을 사용하여 제거한다.


var http = require('http');

var querystring = require('querystring');


function displayForm(res) {

  str = '<form action="" method="post" enctype="multipart/form-data">';

  str += 'Name: <input type="text" id="foo" name="foo"/><br>'

  str += 'Phone: <input type="text" id="bar" name="bar"/><br>'

  str += '<input type="submit" value="Submit!" /><br>'

  

  res.writeHead(200, {'Content-Type': 'text/html'});

  res.end(str);

}


http.createServer(function (req, res) {

  if(req.method == 'GET') {

    displayForm(res);

    return;


  } else if (req.method == 'POST') {

    var body = '';

    req.on('data', function(chunk) { 

      body += chunk;

    });

    req.on('end', function() {

      var data = querystring.parse(body, 'name="', '"\r\n\r\n');

      foo = data.foo.replace(/\r\n.*/g,'');

      bar = data.bar.replace(/\r\n.*/g,''));

      res.end(foo);

    }); 

  }

}).listen(8500, '0.0.0.0');