-
[Node.js] Node.js w3schools Tutorial - Day.2programming/node.js 2019. 11. 18. 00:00반응형
*해당 내용은 https://www.w3schools.com/nodejs/ 의 튜토리얼을 따라 하며 정리하는 글입니다.
내장 모듈들
노드에는 내장된 모듈이 몇 개 있다.
그중 HTTP 모듈도 있는데, 사용하려면 require() 메소드를 사용하면 된다.
var http = require('http');
url 모듈
123456789var http = require('http');var url = require('url');http.createServer(function (req, res) {res.writeHead(200, {'Content-Type': 'text/html'});var q = url.parse(req.url, true).query;var txt = q.year + " " + q.month;res.end(txt);}).listen(8080);내장 모듈중엔 url 모듈도 있다.
내장 모듈이라 마찬가지로 require() 메소드를 통해 사용할 수 있다.
http://localhost:8080/?year=2017&month=July
위의 URL로 서버를 접속했을 때, 6번째 줄에서 query object로 반환해준다.
그래서 q.year는 2017이 출력되고, q.month는 July가 출력된다.
url 모듈 2
123456789101112131415var url = require('url');var adr = 'http://localhost:8080/default.htm?year=2017&month=february';var q = url.parse(adr, true);console.log(q.host); //returns 'localhost:8080'console.log(q.pathname); //returns '/default.htm'console.log(q.search); //returns '?year=2017&month=february'var qdata = q.query; //returns an object: { year: 2017, month: 'february' }console.log(qdata.month); //returns 'february'///////////////////////////////////////////////console.log(q);console.log(qdata);url.parse()를 통해 전체적으로 아래와 같은 반환 값을 가진다.
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8080',
port: '8080',
hostname: 'localhost',
hash: null,
search: '?year=2017&month=february',
query: [Object: null prototype] { year: '2017', month: 'february' },
pathname: '/default.htm',
path: '/default.htm?year=2017&month=february',
href: 'http://localhost:8080/default.htm?year=2017&month=february'
}File System
var fs = require('fs');
파일은 readFile(), appendFile(), open(), writeFile() 등의 메소드를 사용할 수 있다.
Upload Files
123456789101112131415161718192021222324252627282930var http = require('http');var formidable = require('formidable');var fs = require('fs');http.createServer(function (req, res) {if (req.url == '/fileupload') {var form = new formidable.IncomingForm();form.uploadDir = "D:/tmp"; // err Error: EXDEV: cross-device link not permitted : 임시 폴더를 변경 하기 같은 파티션으로form.parse(req, function (err, fields, files) {var oldpath = files.filetoupload.path;var newpath = 'D:/USER_PATH/uploadFiles/' + files.filetoupload.name;fs.rename(oldpath, newpath, function (err) {if (err) throw err;res.write('File uploaded and moved!');res.end();});});} else {console.log("form create");res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); // 한글파일 이름 제대로 출력되게 charset=utf-8 추가res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');res.write('<input type="file" name="filetoupload"><br>');res.write('<input type="submit">');res.write('</form>');return res.end();}}).listen(8080);파일을 폼으로 올리고, 파일을 원하는 위치로 이동시키는 예제다.
원래 예제에서 변경된 부분이 2가지가 있다.
22번 줄에서 한글 파일 이름을 제대로 출력하기 위해서 "charset=utf-8"을 추가해 주었다.
파일을 D드라이브로 옮기고 싶어서, 임시파일 저장소도 D로 변경했다.
8번째 줄을 실행시키지 않는다면, C에서 D로 이동하게 되는데,
이때 'err Error: EXDEV: cross-device link not permitted' 에러가 뜰 것이다.
반응형'programming > node.js' 카테고리의 다른 글
[Node.js] gmail로 이메일 전송하기 (0) 2019.11.21 [node.js] 노드 시작할때 실행 인자 받기 (0) 2019.11.20 [Node.js] Node.js w3schools Tutorial - Day.3 (0) 2019.11.19 [Node.js] Node.js w3schools Tutorial - Day.1 (0) 2019.11.16 node.js 설치 방법 (0) 2019.10.15