node js 백만불짜리 꾸울팁 zip 파일 생성 및 다운로드 구현하기
2021. 7. 18. 20:12ㆍ컴퓨터언어/Node.js
728x90
반응형
오늘은 제가 5일간 전전긍긍해서 얻은 쾌거를 나누고자 합니다.
그것은 바로 node.js에서 zip 파일을 다운로드하는 로직을 구현하는 알고리즘인데요.
node.js가 자바스크립트 기반이라고 해서 만만하게 볼 것은 또 아니잖아요..ㅎ
python과 flask를 이용할 때는 아주 편합니다.
flask 모듈에 내장된 send_file을 이용하면 zip이든 csv든, responseType을 크게 신경쓰지 않아도 클라이언트에 알아서 뿌려 주니까요.
하지만 node.js는 모듈 생태계가 아주 많기에, 딱 '이거다!'라고 정형화된 방법이 없어서 로직의 가짓수가 넘쳐납니다.
이 말은 즉 경우의 수가 많기에 구글링해도 내 상황에 맞는 전례를 찾기 어렵다는 말과 같습니다.
저만의 꿀팁을 공개합니다.
node.js로 zip을 구현하는 분이라면, 이 정도의 코드 조각만 보아도 충분히 이해할 수 있으실거라 생각합니다.
도움이 되셨다면 공감과 댓글은 필수!
질문이 있다면 댓글 달아주세요.
Client-Side
import axios from "axios";
const response = await axios.post("/download/zip", {params}, {responseType: 'arraybuffer', headers: {
withCredentials:true,
},});
const url = window.URL.createObjectURL(new Blob([response.data], {type: "application/zip"}));
const link = document.createElement('a');
link.href = url;
const zipFileName = 'myZipFile.zip';
link.setAttribute('download', zipFileName);
document.body.appendChild(link);
link.click();
link.remove();
Server-Side
import zipdir from "zip-dir";
export const makeZip = (req, res) => {
setTimeout(async () => {
const buffer = await zipdir('./download/', { saveTo: './download/myPreciousZipfile.zip' });
res.send(buffer)
}, 1000)
}
728x90
반응형
'컴퓨터언어 > Node.js' 카테고리의 다른 글
pnpm 모노레포 구성하기 (0) | 2024.11.13 |
---|---|
자바스크립트변수 var! 값을 재사용하기 위해 저장해두는 메모리 공간 변수호이스팅? (0) | 2021.07.18 |
Node X MySQL 오답 및 중점노트 (0) | 2020.10.28 |
MySQL과 MongoDB 비교 (0) | 2020.10.27 |
[npm] Sequelize X MySQL 에서 헷갈리거나 어려울만한 것 정리 (0) | 2020.10.26 |