-
Node.js 파일생성(글쓰기)/ 파일생성과 동시에 RedirectNode.js 2020. 8. 24. 17:52
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="/create">create</a> ${body} </body> </html> `; } function templateList(filelist){ var list =`<ul>`; var i = 0; while(i < filelist.length){ list += `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>` i += 1; } list = 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; console.log(pathname); if(pathname === '/'){ if(queryData.id === undefined){ fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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){ fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var list = templateList(filelist); var template = templateHTML(title, list, `<h2>${title}</h2><p>${description}</p>`); response.writeHead(200); response.end(template); }); }); } } else if(pathname === '/create'){ fs.readdir('./data', function(error, filelist){ var title = 'WEB - create'; var list = templateList(filelist); var template = templateHTML(title, list,` <form action="http://localhost:3000/process_create" method="post"> <p> <input type="text" name="title" placeholder="title"> </p> <p> <textarea name="description"></textarea> </p> <p> <input type="submit"> </p> </form> ` ); response.writeHead(200); response.end(template); }); } else if(pathname === '/process_create'){ var body = ''; request.on('data', function(data){ body += data; }); request.on('end', function(){ var post = qs.parse(body); var title = post.title; var description = post.description; fs.writeFile(`data/${title}`, description, 'utf8', function(err){ response.writeHead(302, {Location: `/?id=${title}`});; response.end(); }); }); } else{ response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
fs.write() 에 저장할 경로, 쓸 내용, 인코딩 방식, 함수 파라미터로 입력
=> 글 작성하면 파일생성하고 해당 디렉토리에 저장된다.
함수안에 response.writeHead(302, {Location: `/?id=${title}`}); => 302는 파일이 써졌을 때 어떤 페이지로 redirect 하겠다는 뜻
'Node.js' 카테고리의 다른 글
Node.js - 글 삭제하기 (0) 2020.08.24 Node.js 글 수정하기 (0) 2020.08.24 Node.js - POST방식으로 전송된 데이터 받기(생활코딩) (0) 2020.08.23 Node.js - 글생성 UI만들기 (0) 2020.08.23 Node.js Package Manager(npm) 와 PM2 (0) 2020.08.19