ブラウザからURLにアクセスしたらファイルをダウンロードできる感じで
HTML+javascriptでCSVをレスポンスするAPIをコールしてCSVファイルをローカルにダウンロードしたい
#結論
- レスポンスタイプをblobにする
- aタグをオブジェクトを生成してurlとdowndo属性を付与する
javascript
// APIのレスポンスが"Content-Type": 'text/csv'の想定
var request = new XMLHttpRequest();
request.open('GET', URL, true);
// 1. レスポンスタイプをBlobにする
request.responseType = "blob";
request.onload = function () {
var data = this.response;
// 2. aタグを作成してURLにBLOBをセット
const a = document.createElement("a");
document.body.appendChild(a);
//csvファイル名を指定
a.download = 'foo.csv';
a.href = window.URL.createObjectURL(data)
a.click();
}
request.send();
おしまい