InternetExplorer9になってから、ファイルをダウンロードする際の表示方法が大分変わりました。
InternetExplorer8まではダイアログ表示だったのに対し、InternetExplorer9ではブラウザの下のほうに通知バーが表示されるようになりました。
ところが、InternetExplorer9を使っていても、時折、通知バーではなく、ダイアログが表示されることがありました。
開発中のシステムでもファイルをダウンロードする際に、通知バーが表示されたりダイアログが表示されたりすることがあったので、ちょっとパターンわけをして見ました。
【ダイアログが表示されるパターン】
- <a href=”ファイルパス” target=”_blank”>リンク</a>
- Response.Redirect(“ファイルパス”);
- this.Page.Response.AppendHeader(“Content-Disposition”, “inline;filename=ファイル名”);
【通知バーが表示されるパターン】
- this.Page.Response.AppendHeader(“Content-Disposition”, “attachment;filename=ファイル名”);
統一して欲しい・・・汗
ていうか、なぜこんな結果になるんだろうといろいろ調べていると、ダイアログが表示される条件を書かれているサイトがありました。
IE9 でダウンロードの際に通知バーではなくダイアログが表示される場合がある|Hebikuzure’s Tech Memo より引用
今の所確認できる条件は
- ダウンロードするファイルの種類が Office のドキュメント (Word 文書、Excel ワークブック、PowerPoint プレゼンテーション) か、Windows Explorer で開けるアーカイブ ファイル (.zip や .cab) である
- ダウンロードするファイルへの直接リンクからダウンロードを開始している(<a href=””hogehoge.docx””>ダウンロード開始</a> のようなリンクをクリックして開始している)
- サーバーが応答 HTTP ヘッダーで content-disposition: attachment ヘッダーを返さない
三つが満たされた場合です。逆に言えばこれ以外の場合は、ダウンロードを開始すると通知バーが表示されます。
そうゆうことかー。
個人的には、通知バーってなんだか見にくくて好きじゃないから、ダイアログ表示にしたいって思ってましたけど、IEとしては通知バー推しっぽいので、開発中のシステムではHTTPヘッダーで「content-disposition:attachment」を返す方法で統一しておこうかな。
どうせダウンロードする箇所も4,5箇所しかないからな。
明日、朝一で修正かましとこっと。