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

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var http = require('http');
var fs = require('fs');
 
var server = http.createServer();
 
server.listen(7070function() {
    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();
    });
});
cs

 



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

응답 헤더에 Content-Type 이라는 값을 image/png 로 지정해 주었는데, 이것은 응답하는 데이터가 image 데이터이며 png 파일이라는 것을 알려주는 것입니다.
이러한 데이터 형식을 정의한 것을 MIME Type이라 합니다. MIME 타입에는 이외에도 css, html, zip, mp3 등 다양한 값들이 들어갈 수 있습니다.

 

요청 결과





블로그 이미지

도로락

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

댓글을 달아 주세요! 질문 환영합니다!