InternetExplorer9になってから、ファイルをダウンロードする際の表示方法が大分変わりました。

InternetExplorer8まではダイアログ表示だったのに対し、InternetExplorer9ではブラウザの下のほうに通知バーが表示されるようになりました。

ところが、InternetExplorer9を使っていても、時折、通知バーではなく、ダイアログが表示されることがありました。

開発中のシステムでもファイルをダウンロードする際に、通知バーが表示されたりダイアログが表示されたりすることがあったので、ちょっとパターンわけをして見ました。

【ダイアログが表示されるパターン】

  1. <a href=”ファイルパス” target=”_blank”>リンク</a>
  2. Response.Redirect(“ファイルパス”);
  3. this.Page.Response.AppendHeader(“Content-Disposition”, “inline;filename=ファイル名”);

【通知バーが表示されるパターン】

  1. 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箇所しかないからな。

明日、朝一で修正かましとこっと。

コメントを残す

メールアドレスが公開されることはありません。