-
[자바스크립트] presignedUrl 다운로드개발 흉내 2021. 3. 30. 18:52
how to download s3 presignedUrl in javascript
최신 브라우저는 다음 코드로 충분하다.
// download in modern browser function download (url) { const link = document.createElement('a'); link.href = url; link.click(); }
a 태그를 생성하고 url를 잡아준 뒤 클릭한 것같은 효과를 낸다.
클릭에서 다운로드가 시작될 것이다.
근데 IE에서는 아무런 반응이 없다.
DOM에서 로딩되지않으면 실체가 없다고 판단하는 모양이다.
DOM에 추가한 뒤 바로 토끼자.
// download in IE function download (url) { const link = document.createElement('a'); link.href = url; link.style['display'] = 'none'; document.body.appendChild(link); link.click(); document.body.removeChild(link); }
a 태그를 생성하고 url를 잡아준 뒤 투명한 상태로 DOM에 추가한다.
클릭 효과를 내고 메모리 누수를 방지하기 위해 삭제한다.
그럼 여기서 손들고 질문을 해야한다.
위에 있는 코드에서는 왜 삭제 안하셨어요??
위에 있는 코드에서는 갈비지 콜렉터(garbage collector, GC)가 알아서 삭제해주므로 안해도 된다. (https://stackoverflow.com/questions/1847220/javascript-document-createelement-delete-domelement)