@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

IE7.0でのダウンロード処理について

投稿者投稿内容
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-11-10 17:41
WEBアプリ(ASP.NET)のCSVダウンロード処理をIE7.0で実行すると正常に動作しません。
(確認ダイアログにて保存ボタンを押下すると転送画面で固まる。初回時のみ)
どなたか同じような現象が発生し、対応策をご存知の方はご教授願います。
※IE7.0はお客様の要望であり早急に対応が必要です。

お願いいたします。

以下、ダウンロード処理(抜粋)

Dim oContext As HttpContext = HttpContext.Current
Dim Response As HttpResponse = oContext.Response
Dim Request As HttpRequest = oContext.Request
Response.Clear()
Dim strFile As String = aaa()
'ヘッダ書き込み
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFile))
If InStr(Request.ServerVariables("HTTP_USER_AGENT"), " MSIE 5.5;") > 0 Then
'--- IE 5.5 の場合の回避策
Response.ContentType = "Application/Octet-Stream-Dummy;charset=Shift_JIS"
Else
'--- その他のブラウザ
Response.ContentType = "Application/Octet-Stream;charset=Shift_JIS"
End If

'Shift-JISでデータ書き込み
Dim enc As Encoding = System.Text.Encoding.GetEncoding("Shift-JIS")
Dim i As Integer
For i = 0 To iCount - 1
Response.BinaryWrite(enc.GetBytes(strList(i)))
Next
Response.Flush()
Response.End()
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2006-11-10 18:12
うちでも同じ現象が起きました。

"Content-Disposition","attachment;filename="
の部分を
"Content-Disposition","inline;filename="
にすると、とりあえずダウンロードできました。

IE7のバグっぽい感じがします。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-11-10 18:56
yuzyさんありがとうございます。
inlineですと直接画面に表示されてしまいます。
あくまでクライアント側へのファイルダウンロードを考えています。
お願い致します。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-11-10 23:03
Draさん、こんばんは。

私のところでは、その現象は出ておりません。
やっている事はほぼ一緒なので参考にならないかも知れませんが、微妙に違う部分もあったりしますので、一応、コード貼っときます。

コード:

Response.Buffer = True
Response.ContentType = "Application/Octet-Stream"

If (Request.UserAgent.IndexOf("Windows NT 5.1; SV1;") > 0) _
OrElse (Request.UserAgent.IndexOf("MSIE 7.0;") > 0) Then
    ' Xp SP2 か IE7 の場合
    Response.AppendHeader("Content-Disposition", _
      "attachment;filename=UTF8 でエンコードされたファイル名")
Else
    ' それ以外
    Response.HeaderEncoding = Request.ContentEncoding
    Response.AppendHeader("Content-Disposition", _
      "attachment;filename=Request.ContentEncoding でエンコードされたファイル名")
End If

Response.AppendHeader("Content-Transfer-Encoding", "base64")

Dim ShiftJis As Encoding = System.Text.Encoding.GetEncoding(&H3A4) 
Dim FileData() As Byte = ShiftJis.GetBytes("CSV データ文字列")
Response.OutputStream.Write(FileData, 0, FileData.Length)

Response.Flush()
Response.End()



サーバ:IIS6.0 + ASP.NET 2.0
クライアント:Xp Pro + IE7
にて確認。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-11-11 01:04
きくちゃんさん、ありがとうございます。
以下の方式で確認したいと思います。(来週あたまに・・・)
当現象は、環境によって発生したりしなかったりするので厄介です。・・・
また、ご報告させてもらいます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-13 22:56
関連がありそうなので、相互リンク
http://vsug.jp/tabid/63/forumid/47/postid/7544/view/topic/Default.aspx

_________________
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-11-14 09:57
Jittaさん、ありがとうございます。
早速試してみます。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2006-11-14 16:52
いろいろありがとうございます。
結局、掲載していただいた方法等試しましたが、同様の結果でした。
何かよい情報がございましたらお願いします。

スキルアップ/キャリアアップ(JOB@IT)