IEの場合、aタグのdownload属性が効かず、ファイルのダウンロードできなかったため、その代替案についての覚え書きです(Drupalネタではないです)。
download属性
Excelファイルをダウンロードできるように、以下のようなリンクを作成し、ファイルがダウンロードできることを確認していたのですが、
<a download="Test.xlsx" href="/download/Test.xlsx">Test.xlsx</a>
IEの場合、これではダウンロードできないとのことで、その対応結果を以下に記します。
JavaScriptでの対応
ググったところ、JavaScriptで画像をダウンロードしたいの記事によると、JavaScriptを使えば、IEでもリンクからファイルのダウンロードができるとのこと。
上記の記事を参考にして、以下のJavaScriptを記述。
function downloadFile(uri,fileName,id) {
// IEはdownload属性が効かないので分岐
if (window.navigator.msSaveOrOpenBlob) {
let xhr = new XMLHttpRequest();
xhr.open('GET', uri);
xhr.responseType = 'blob';
xhr.onloadend = function() {
if (xhr.status !== 200) {
return false;
}
window.navigator.msSaveOrOpenBlob(xhr.response, fileName);
};
xhr.send();
} else {
let link = document.getElementById(id);
link.href = uri;
link.download = fileName;
}
}
HTMLは、以下のように記述を変更し、IEでもファイルをダウンロードできるようになりました。
<a id="download1" href="javascript:void(0);" onclick="downloadFile('/download/Test.xlsx','Test.xlsx','download1');">Test.xlsx</a>
カテゴリー
コメント
ページ送り
コメントを追加