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(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();
});
}); |
cs |
클라이언트(브라우저) 로부터 요청이 오면 ./flower.png 라는 이미지 파일을 fs 모듈을 통해 읽어들인 후 response 객체의 write() 메서드를 통해 응답해 주었습니다. 이때 ./floser.png의 ./ 는 상대경로로 현재 실행되는 nodeJS 소스와 같은 디렉터리 상의 flower.png 파일을 의미합니다.
그렇기 때문에 위 코드를 실행하기 위해서는 같은 디렉터리에 이미지 파일이 존재해야 합니다.
응답 헤더에 Content-Type 이라는 값을 image/png 로 지정해 주었는데, 이것은 응답하는 데이터가 image 데이터이며 png 파일이라는 것을 알려주는 것입니다.
이러한 데이터 형식을 정의한 것을 MIME Type이라 합니다. MIME 타입에는 이외에도 css, html, zip, mp3 등 다양한 값들이 들어갈 수 있습니다.
요청 결과
'NodeJS' 카테고리의 다른 글
[Node.js] NodeJS http 모듈로 HTTP GET방식 요청하기 (0) | 2018.02.19 |
---|---|
[Node.js] NodeJS 웹서버에서 스트림을 이용하여 클라이언트에게 파일 응답 (0) | 2018.02.17 |
[Node.js] NodeJS http 모듈 [2] HTTP 응답하기 및 server 이벤트 (0) | 2018.01.29 |
[Node.js] NodeJS http 모듈 [1] 웹서버 작동 방법 (0) | 2018.01.28 |
[Node.js] NodeJS 로깅 (Logging) (1) | 2018.01.28 |