node.js 에서 http로 response에 파일 담기
파일들을 펌핑하는 법은 아래와 같다.
(확장자 별로 분기하여 처리.. 이미지만 예를 들겠다)
이미지 뿐만아니라 동영상 등 여러 파일도 아래와 같이 쓰면 된다.
var fs = require('fs'), http = require('http'), util = require('util'), sys = require('sys'); var foo = function(req, response) { var url = req.url; // /img.jpg var ext = url.substring(url.lastIndexOf(".")+1); // jpg if (ext == "gif" || ext == "jpg") { fs.stat("public"+url, function(error, stat){ if (error) { throw error; } var rs; response.writeHead(200, { 'Content-Type' : 'image/' + ext, 'Content-Length' : stat.size, }); rs = fs.createReadStream("public" + url); // public/img.jpg을 읽는다 util.pump(rs, response, function(err) { if(err) { console.log("util.pump error"); throw err; } }); }); } } var httpServer = http.createServer(foo).listen(3000); |
util 대신 sys.pump 를 해도 똑같이 동작한다.
sys는 구버전이고 util이 최신거이므로 util로 써야한다.
둘은 비슷한 인터페이스를 쓰고 있다고한다.