[Javascript] blob을 이용한 파일 다운로드

 

/**
 * 현재 브라우저가 IE인지 판별
 */
function isIE() {
    return (navigator.appName === 'Netscape' && navigator.userAgent.search('Trident') !== -1) ||
        navigator.userAgent.toLowerCase().indexOf("msie") !== -1;
}

 

if ( isIE() ) {	// IE
	var blob = new Blob([data], { type : 'application/applefile'  });
	window.navigator.msSaveBlob(blob, fileNm + cmsDate.substr(4, 8));
} else {
	var blob = new Blob([data], { type : 'application/applefile'  });
	objURL = window.URL.createObjectURL(blob);
			            
	// 이전에 생성된 메모리 해제
	if (window.__Xr_objURL_forCreatingFile__) {
		window.URL.revokeObjectURL(window.__Xr_objURL_forCreatingFile__);
	}
	 window.__Xr_objURL_forCreatingFile__ = objURL;
	 var a = document.createElement('a');
	a.download = fileNm + cmsDate.substr(4, 8);
	a.href = objURL;
	a.click();
}

텍스트 데이터를 data로 생성하여 파일을 만들고 다운로드 하는 방법이다.

 

download = fileName 형식으로 파일명을 지정할 수 있다.

 

확장자가 없는 파일 형식으로 다운로드하길 원했는데

 

파일명에서 확장자를 빼도 계속 .txt가 붙어 나와서 한참을 헤맸다...

 

Blob 생성시 type 부분에 따라 달라지는 듯 하다.

 

.txt는 txt/plain, .json은 application/json 등..

 

뭘로 해야 할지 몰라서 application/applefile 로 사용했는데 원하던대로 확장자가 없이 나와서 일단 이렇게 사용한다.

 

Media Types 참고 :

https://www.iana.org/assignments/media-types/media-types.xhtml

 

Media Types

 

www.iana.org

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기