📕🐘 도로락 - 코끼리를 냉장고에 넣는 방법
NodeJS | 2018. 1. 31. 08:00

[Node.js] NodeJS 웹서버에서 클라이언트에게 파일 응답하기

참고글

NodeJS 클라이언트에게 파일 전송하기

웹서버는 클라이언트에게 웹페이지(html)를 응답하기도 하지만 동영상이나, 이미지, 워드문서 같은 미디어 파일을 응답하기도 합니다. 예를 들어 NodeJS로 게시판을 만든 경우에 회원이 올린 게시글의 첨부파일이 있을 수 있습니다.

회원이 해당 게시글의 첨부파일을 웹서버에게 요청하게 되면 서버에서는 해당 파일을 브라우저에게 응답해주어야 할 것입니다. 여기서는 이미지 파일을 응답하는 것으로 하겠습니다.

var http = require('http');
var fs = require('fs');

var server = http.createServer();

server.listen(7070, function() {
    console.log('server start');
});

server.on('request', function(req, res) {

    fs.readFile('./flower.png', function(err, data) {
        res.writeHead(200, {"Content-Type": "image/png"});
        res.write(data);
        res.end();
    });
});

클라이언트(브라우저) 로부터 요청이 오면 ./flower.png 라는 이미지 파일을 fs 모듈을 통해 읽어들인 후 response 객체의 write() 메서드를 통해 응답해 주었습니다. 이때 ./flower.png./ 는 상대경로로 현재 실행되는 nodeJS 소스와 같은 디렉터리 상의 flower.png 파일을 의미합니다.

그렇기 때문에 위 코드를 실행하기 위해서는 같은 디렉터리에 이미지 파일이 존재해야 합니다.

응답 헤더에 Content-Type 이라는 값을 image/png 로 지정해 주었는데, 이것은 응답하는 데이터가 image 데이터이며 png 파일이라는 것을 알려주는 것입니다.

이러한 데이터 형식을 정의한 것을 MIME-Type이라 합니다. MIME 타입에는 이외에도 css, html, zip, mp3 등 다양한 값들이 들어갈 수 있습니다.

MIME Type - [HTTP] MIME Type(Multipurpose Internet Mail Extensions)

요청 결과

도로락

도로락

Writer

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그