[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
최근댓글