ファイルのコンテンツをクライアントに送信する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 のみに関係しているようです。また、プロジェクトが開発サーバーでローカルに実行されている場合は正常に動作しますが、公開サーバーに接続されている場合はファイルのダウンロードに失敗することも発見しました。