.zip 만들어서 다운받기

airwalk·2023년 12월 24일

서버에 여러 파일들이 존재한다.
단일 파일은 a태그를 이용해서 서버 URL로 요청하면 다운 받을 수 있다.
현재 하고 싶은 것은 사용자가 여러 파일을 업로드 후 다시 파일들을 다운 받을 때 .zip으로 묶어서 한번에 받고 싶다.

라이브러리 설치

npm install file-saver jszip

코드

const saveFilesAsZip = (files) => {
    const zip = new JSZip();
    const remoteZips = files.map(async (file) => {
      const fetchedFile = await fetch(image.path)
        .then((res) => {
          if (res.status === 200) return res.blob();
        })
        .catch((err) => console.log(err));
      if (fetchedFile) {
        zip.file(`${file.name}.${file.type}`, fetchedFile, {
          binary: true,
        });
      }
    });
    Promise.all(remoteZips).then(() => {
      zip.generateAsync({ type: 'blob' }).then((blob) => {
        saveAs(blob, `test.zip`);
      });
    });
  };

0개의 댓글