ダウンロードの仕組みはブラウザにて実装状況が異なるようです。
File APIを使ったダウンロードの仕組みが有名ですが、
IEではwindow.URL.createObjectURL()を使用するとおかしくなるみたいです。
File APIのブラウザによる差を吸収してくれるfileSaverというライブラリがあるため、
そちらを使用するとIEでも問題なくダウンロードできるようになります。
ダウンロード処理の例
import { saveAs } from "file-saver";
import axios from "axios";
function download(params = {}){
axios.get(apiUrl, {
params,
responseType: "blob"
})
.then(response => {
const blob = new Blob([response.data], {
type: response.data.type
});
//レスポンスヘッダからファイル名を取得します
const contentDisposition = response.headers["content-disposition"];
const fileName = getFileName(contentDisposition)
//ダウンロードします
saveAs(blob, fileName);
})
}
function getFileName(contentDisposition){
let fileName = contentDisposition.substring(contentDisposition.indexOf("''") + 2,
contentDisposition.length
);
//デコードするとスペースが"+"になるのでスペースへ置換します
fileName = decodeURI(fileName).replace(/\+/g, " ");
return fileName;
}