// main.js
var qs = require('querystring');
var app = http.createServer(function(request,response){
......
....
..
if(pathname === '/create'){
title = 'WEB - create';
var readFolder = './data';
fs.readdir(readFolder, (error, filelist) => {
var list = templateList(filelist);
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 += data;
});
/* 조각조각의 데이터 수신이 끝났을 경우 호출되는 부분 */
request.on('end', function(){
var post = qs.parse(body);
var title = post.title;
var description = post.description;
/* 받아온 데이터를 파일형태로 저장 */
fs.writeFile(`data/${title}`, ${description}, 'utf8', () => {
response.writeHead(302, {location : `/?id=${title}`});
response.end();
}
});
});
app.listen(3000);
1. form태그로 데이터 보내기. (post방식)
웹브라우져에서 post로 데이터를 보낼때, 데이터의 양이 많으면 프로세스가 다운될 수 있는 위험이 있음.
그럴 경우를 위해, node.js에서는 data를 조각조각내서 받음.
'data', 'end'와 같은 것들을 이벤트라고 한다.
2. 파일 저장 (파일 쓰기)
fs.writeFile(파일경로 및 파일이름, 파일내용, 인코딩타입(옵션), 콜백함수);
3. 리다이렉션
response.writeHead(응답코드, {location : 리다이렉트 할 주소});
**** 의문쓰
title이 같을 땐 파일이름이 중복될텐데 어떻게 하나??
--> 테스트결과 : 내용이 덮어씌워진다. 파일제목을 다른 이름으로 저장할 수 있게 로직을 바꿔야겠군.
출처
App - 글생성 UI 만들기
opentutorials.org/course/3332/21135
App - POST 방식으로 전송된 데이터 받기
opentutorials.org/course/3332/21136
App - 파일생성과 리다이렉션
'개발일기 > Node.js 공부하기' 카테고리의 다른 글
App - 글삭제 (delete) (0) | 2021.04.09 |
---|---|
App - 글수정 (update) (0) | 2021.04.09 |
Node.js - 패키지 매니저와 PM2 (0) | 2021.04.09 |
Node.js - 파일 목록 알아내기 & App - 글목록 출력하기 (0) | 2021.04.07 |
Node.js - pathname & App - Not found 오류 구현(response 코드 설정) (0) | 2021.04.07 |