본문 바로가기

Back-End/Node.js

Node.js.33.App 제작-파일생성과 리다이렉션

반응형

목표

사용자로부터 받은 data를 data 디렉토리 안에 파일 저장하고,

사용자가 입력한 데이터가 잘 전송되었는지 확인하는 다른 페이지로 가게 하기 (redirection)

 


Google에 nodejs file write를 검색해보자.

https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback

 

File system | Node.js v14.9.0 Documentation

 

nodejs.org

fs.writeFile(file, data[, options], callback)

callback 함수가 실행됨 (=파일의 저장이 끝났다). 따라서 response에 관한 코드들을 함수 속에 작성해야 한다.

      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) {
          if(err) throw err;
          response.writeHead(200);  //200: 파일을 성공적으로 전송하였음
          response.end("success");
        })
      });

리로드하여 제출버튼을 누르니 파일이 생성되었다 !

 

만약 제출 후에, 생성된 파일을 보는 view page로 보내고 싶다면? http://localhost:3000/?id=hi 로 들어가면 된다. 그러면 전송이 됐는지 한 번에 확인할 수 있다. 

사용자가 어떤 페이지에 튕겨 가게 하는 것을 리다이렉션(redirection) 이라고 한다.

 

Google에 nodejs redirection 검색을 해보자.

 

How to redirect user's browser URL to a different page in Nodejs?

In the application I'm trying to write, the main page (http://localhost:8675) has the following form:

stackoverflow.com

- 200: success

- 301: 들어왔던 주소를 아래 주소로 영원히 바꾸겠다.

- 302: 다른 페이지로 redirection 시킨다

우리는 페이지를 영원히 바꾸지 않고 일시적으로 지금만 페이지를 바꿀 것이므로 301은 적합하지 않고 302가 적합하므로 302를 사용하면 된다.

        fs.writeFile(`data/${title}`, description, 'utf8',
        function(err) {
          response.writeHead(302, {Location: `/?id=${title}`});  //200: 파일을 성공적으로 전송하였음
          response.end();
        });

제출하자마자 바로 페이지가 이동된다 !

반응형