[생활 코딩] Node.js 파일 추가하기
파일 추가하기: writeFile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); function templateHTML(title, list, body) { return ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <a href="/?id=create">create</a> ${body} </body> </html> ` } function templateLIST(filelist) { var list = '<ul>'; var i = 0; while (i < filelist.length) { list = list + `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`; i++; } list += '</ul>'; return list; } var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url.parse(_url, true).query; var pathname = url.parse(_url, true).pathname; var path = url.parse(_url, true).path; console.log(pathname); if (path === '/') { if (queryData.id === undefined) { fs.readdir('./data', function(error, filelist) { var title = 'Welcome'; var description = 'Hello, Node.js'; /* var list = `<ol> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ol>`; */ var list = templateLIST(filelist); var template = templateHTML(title, list, `<h2>${title}</h2><p>${description}</p>`); response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist) { var title = queryData.id; var list = templateLIST(filelist); fs.readFile( `./data/${title}`, 'utf8', function(err, description) { var title = queryData.id; var template = templateHTML(title, list, `<h2>${title}</h2><p>${description}</p>`); response.writeHead(200); response.end(template); }); }); } } else if (path === '/?id=create') { fs.readdir('./data', function(error, filelist) { var title = 'WEB - create'; var list = templateLIST(filelist); //process_create url은 작성한 정보를 전송하는 url이다. var template = templateHTML(title, list, ` <form action="http://localhost:3000/create_process" method="post"> <p><input type="text" name="title" placeholder="title"></p> <p> <textarea name="description" placeholder="description"></textarea> </p> <p> <input type="submit"> </p> </form> `); response.writeHead(200); response.end(template); }); } else if (pathname === '/create_process') { var body = ''; //정보가 추가되는 코드 request.on('data', function(data){ body = body + data; }); request.on('end', function(){ var post = qs.parse(body); //{title: 작성내용, description: 작성내용} 이렇게 출력 //qs.parse를 통해서 제목과 내용을 가져올 수 있다. var title = post.title; var description = post.description; fs.writeFile(`./data/${title}`, description, 'utf-8', function(err) { response.writeHead(200); response.end('success'); }) }); } else { response.writeHead(404); response.end('Not Found'); console.log(pathname); } }); app.listen(3000); | cs |
댓글남기기