[node.js]base64로 인코딩한 이미지 db에 저장, 불러오기
mongodb에 간단한 base64 인코딩 이미지를 저장및 불러오는 방법을 기록해둔다.
html2canvas를 이용하여 html일부를 스크린샷형태로 저장하면 base64 인코딩된 문자열을 받을 수 있다.
이걸 그냥 db에 저장한다. (data:image/jpeg:base64,/~~~로 시작하는 그대로)
문제는 불러올때인데, 예를들어 /screenshot/asdf 에 접속하면 다운받을 수 있게 하고자 하는 코드 예제이다.
주소가 파일명이 아니지만 파일로 인식하게하기위한 작업이다.
app.get("/screenshot/:seats_id",(req,res)=>{
//db로 불러온걸 base64data에 넣어주는 작업이 여기 들어갑니다.
let img = new Buffer(base64data.split(",")[1], 'base64');
res.writeHead(200, {'Content-Type': 'image/jpeg','Content-Length': img.length,'Cache-Control': 'no-cache'});
res.end(img);
});
});
필자는
이 글에서 언급했다시피 nginx를 웹서버로쓰고 리버스프록시로 node.js를 연결해 사용중인데
static파일만 nginx에서 직접 호스팅하다보니 url이 파일이름이면 nginx에서 먼저 찾는 수고를 하기때문에 위와같은 작업을 하게되었다.
결국은 그냥 파일로 저장해 호스팅하는 방식으로 선회했지만 나중에라도 db에 이미지를 저장해 쓸때를 대비해 적어둔다.