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');
'Node.js' 카테고리의 다른 글
[Node.js] HTTPS 서버 실행 시 XP IE8에서 접속 불가능한 경우 (0) | 2017.04.12 |
---|---|
[node.js] 마지막 콜백에서 response하기 (0) | 2016.05.09 |
[node.js] HTTPS & Digest (0) | 2016.05.04 |
[node.js] 개발자가 가장 많이 실수하는 10가지 (0) | 2016.04.20 |
[node.js] Error Handling in Node.js (0) | 2016.02.02 |