내가 아는 유일한 방법은 FileSaver.js가 사용하는 트릭입니다 .
- 숨겨진
<a>
태그를 만듭니다 .
- 해당
href
속성을 Blob의 URL로 설정하십시오 .
download
속성을 파일 이름으로 설정하십시오 .
<a>
태그를 클릭하십시오 .
다음은 간단한 예입니다 ( jsfiddle ).
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = { x: 42, s: "hello, world", d: new Date() },
fileName = "my-download.json";
saveData(data, fileName);
아이디어를 설명하기 위해이 예제를 작성했습니다. 프로덕션 코드에서는 FileSaver.js를 대신 사용하십시오.
노트
- 이전 브라우저는 HTML5의 일부이므로 "다운로드"속성을 지원하지 않습니다.
- 일부 파일 형식은 브라우저에서 안전하지 않은 것으로 간주되어 다운로드가 실패합니다. txt 확장자로 JSON 파일을 저장하면 효과적입니다.