본문 바로가기

프로그래밍/Javascript

InternetExplorer ajax 파일 다운로드 처리 (msSaveBlob 사용)

반응형

백오피스의 일부 엑셀 다운로드가 IE에서 안 된다는 오류가 들어왔다. 열어보니 두 케이스였다.

  1. 프론트에서 데이터 내용을 만들어 a 태그에 넣어 클릭 발생
  2. 서버에서 받아오지만 ajax로 byte[]를 받아와 a 태그로 만들어 클릭 발생

어쨌뜬 <a/>download 어트리뷰트를 사용한다는 공통점이 있었다. 이건 IE에서는 안된다. download 어트리뷰트가 엣지부터 가능하기 때문이다. (IE를 안 쓰면 모두가 행복한데 ㅠㅠ)

그냥 서버로 처리할까 하다가 msSaveBlob라는 것을 찾았다. IE10부터 지원한다.

if (window.navigator.msSaveBlob) {
    var blob = new Blob([datastring]);
    window.navigator.msSaveBlob(blob, fileName);
} else {
    // ...
}

마음의 평화가 찾아왔다.

반응형

개발자가 그리는 인스타툰 팔로우하세요!