Javascript

axios로 파일 다운로드 시 대용량은 안될 때

킹king 2025. 3. 6. 18:34
반응형

나한테..왜글애...나도 몰라...

 

간단하게 설명하자면 axios에서 zip파일을 다운받아 뭔가를 해줘야했는데 여기서 문제가 발생함. 

설정 성공 실패 비고
responseType: arraybuffer 파일 다운로드 됨 대용량(3gb정도?)은 안됨  
그래서 stream으로 받아 createWriteStream처리해봄
responseType: stream   파일을 받아도 0kb로 나옴
response.data가 ""임
maxContentLength: Infinity,
maxBodyLength: Infinity
timeout: 0
이런 각종 옵션에 header에 다른걸 추가해도 안됨
그래서 blob으로 받아 buffer로 받는식으로 처리해봄
responseType: blob 파일 다운로드 됨 대용량 안됨 하.....

 

아무튼 이러한 기나긴 여정을 지나 해결책은

 

 

1. fetch 사용하기

const response = await fetch(url);

전반적인 방법은

 

1. 단순하게 fetch을 함

2. createWriteStream처리를 함

3. response.body.getReader()해서 read()하고 여기서 받은 value를 write(value)함

 

이런식으로 하면 파일을 메모리에 올려 처리하는게 아니고(그래서 대용량에서 버거워서 에러가 난듯), 직접적으로 파일로 사용해서 쓴다고 함.

 

사실 나도 잘 모르고 급하게 챗지피티랑 뒤지고 뒤져서 해결한부분이라 설명이 애매하긴한데, 아무튼 지피티한테 상황 설명하고 fetch로 처리하는 방법 알려달라고 하면 될듯함.