ajaxでファイルをストリーム形式でダウンロードする方法についてです。

サービス側でレスポンスヘッダのコンテントタイプにapplication/octet-stream、ヘッダにContent-dispositionを指定すれば、<a>タグでもファイルダウンロードはできるわけだけど、他にも<meta>タグの HTTP-EQUIV="Refresh"でcontentにURLを指定する方法や、iframeを使う方法などがある。特にダウンロードを失敗した時のメッセージをクライアントを返したい場合はiframeが使えるかも。個人的にはできない時はノーリアクションでもいいと思うんだけどね、この辺りは癖があるし。

あと、サービス側でコンテントヘッダを指定する前にバイト出力するストリームを弄ろうとしたら、不具合がでたりする。でたりするという表現は、文字通り出たり出なかったりしてあいまいだから。環境や言語やPCのスペックによって違うんだろう。