반응형
간단하게 설명하자면 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로 처리하는 방법 알려달라고 하면 될듯함.
'Javascript' 카테고리의 다른 글
[ts] TouchEvent 타입 문제 (0) | 2024.10.16 |
---|---|
[javascript] setTimeout을 clearTimeout할 때 (0) | 2024.07.01 |
[javascript] addEventListener 이벤트 중복 막기 (0) | 2024.06.12 |
[iOS] 아이폰,아이패드에서 간헐적으로 audio 안나올 때 (0) | 2024.05.24 |
input에서 enter쳤는데 두번 실행될 때 (0) | 2024.02.22 |