2011-08-09 8 views
1

私はC#のasp.netでクライアントマシンにサーバーからファイルをダウンロードするには、ファイルのダウンロード方法を記述しHTTP応答ファイルのダウンロード(C#の、Asp.net)

私は、次のコードを書きました:

Response.ContentType = ReturnExtension(System.IO.Path.GetExtension(file.Name)); 

        Response.AppendHeader("Content-Disposition", "attachment; filename=" + file.Name); 

        Response.TransmitFile(strRequest); 

        Response.End(); 

これは、FirefoxとChromeではなく、IEで正常に動作します。

+1

ダウンロードしないと言うと、ブラウザウィンドウで開くのですか?何もしない?また、あなたのReturnExtensionメソッドがMIMEタイプを返すことを確認できますか?名前のようには聞こえませんが、確認する必要があると思っています...ファイル名にもスペースがありますか?それともヘッダーを混乱させるような何かがありますか? – Chris

+1

ファイル名のスペースは問題にならないはずですが、適切なContentTypeを持つ必要があります。ファイル拡張子は適切ではありません。 –

+0

私のReturnExtensionメソッドは、ファイルの拡張子をチェックし、拡張子に従ってMIMEタイプを返します。ファイルの拡張子が.bmpの場合、文字列 "image/bmp"が返されます。私がダウンロードボタンをクリックしてもダイアログが表示されませんが、firefoxとchromeでは問題なく動作しますが、Internet Explorerでは何も起こりません。 –

答えて

0

私はIEの一部のバージョンでは、同様の問題に直面し、ダウンロードが正常に動作し作るためのCache-Controlヘッダを設定しなければならなかった。

response.Cache.SetCacheability(HttpCacheability.Private); 
0

はあなたのコードの上にResponse.Clear()を入れてみてください。