2

ファイルのコンテンツをクライアントに送信するasp.netページがあるため、ブラウザはファイルをダウンロードするための[名前を付けて保存]ダイアログを表示します。このページはポップアップで表示され、ユーザーが保存ボタンをクリックすると、自動的に閉じてダウンロードが開始されます。

Windows Server 2003 では問題なく動作します。他のブラウザを使用したビスタでも問題なく動作します。しかし、IE7 & Vista で試してみると、ポップアップが開き、ファイルのダウンロード ダイアログが表示されずに約 1 秒後に閉じます。どうすればこれを解決できますか?

応答生成に使用するコードは次のとおりです。

FileStream fileStream = new FileStream(filePath, FileMode.Open);
int fileSize = (int)fileStream.Length;

byte[] buffer = new byte[fileSize];
fileStream.Read(buffer, 0, (int)fileSize);
fileStream.Close();

Response.Clear();

Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application / octet - stream";

Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.AddHeader("Extension", Path.GetExtension(filename));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254"); 
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();

そして、私はこのjavascriptでポップアップを開いています:

window.open ('Download.aspx?filename=somefile.ext','downloadWindow','location=0,status=0,scrollbars=0,width=1,height=1');

編集:スペースを修正しましたが、残念ながら問題ではありません。

EDIT 2: : この問題は Vista には関係なく、IE のみに関係しているようです。また、プロジェクトが開発サーバーでローカルに実行されている場合は正常に動作しますが、公開サーバーに接続されている場合はファイルのダウンロードに失敗することも発見しました。

4

7 に答える 7

8

のスペースを削除してみてくださいContentType。標準はapplication/octet-streamです。

于 2008-10-16T15:21:01.337 に答える
2

また、ファイル名を引用符で囲むことをお勧めします。そうしないと、スペースが含まれている場合、Firefoxで切り捨てられます。

于 2008-10-17T11:28:04.097 に答える
2

2つのこと。

  1. 前に述べたように、タイプ内のスペースを削除する必要があります
  2. 自分でファイルを読み取るのではなく、 Response.TransmitFile() を使用していない特別な理由はありますか?
于 2008-10-16T15:35:24.503 に答える
1

あなたのコードの特定の問題を指摘することはできません (形式が正しくないように見えるそのコンテンツ タイプを除いて、それが違いを生むかどうかはわかりません)。IE7 と Firefox の両方で動作する、これに使用するコードを次に示します。

Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.CacheControl = "public";
Response.OutputStream.Write(byteArr, 0, byteArr.Length);
Response.End();
于 2008-10-16T15:23:42.967 に答える
0

同じ問題ではないにしても、同様の問題を抱えていたので、この投稿に出くわしました。Windows 7 で IE8 を実行しています。

ローカル マシンでデバッグすると、ファイルのダウンロード プロンプトが表示されますが、[保存] または [開く] をクリックすると、[ダウンロードの進行状況] ウィンドウが約 0.5 秒間表示され、何もダウンロードせずに突然閉じます。

IE7Proという Internet Explorer 用のアドオンがインストールされています。私が有効にしたダウンロードマネージャーが付属しています。無効にすると、問題がなくなり、ファイルを開いたり保存したりできるようになりました。

これが他の誰かに役立つことを願っています。

于 2010-07-07T18:06:35.323 に答える
0

あなたの問題は IIS 7 にあると思います。統合パイプライン モードを使用する新しい Internet Information Server の「addHeader」には問題があります。

Response.AppendHeader を使用してみてください。

于 2009-02-27T16:11:54.547 に答える
0

私も同じ問題を抱えていました...そして私はこの解決策を使用しました(私はbutton.clickで使用しています):

Response.ContentType = "text/txt";
Response.AppendHeader("Content-Disposition", "attachment; filename="+DownloadFileName);
Response.Write(MyFileContent_Text_);
Response.End();

...うまくいきました!!

于 2009-04-02T09:35:32.953 に答える