HTTPHandlerのHTTPレスポンスで、カスタム形式のプレーンテキストファイルをダウンロードしようとしています。ファイルは数字、文字、 "|"デリミタとして。ファイルは実行時に生成され、保存されません。HTTPハンドラのレスポンスからファイルをダウンロードできません
ハンドルもJavaScript関数にデータを返すために使用されているため、ファイルをダウンロードするときに応答を閉じることができません。
現在、これはファイルのダウンロードに使用されているコードです。
MemoryStream ms = new MemoryStream();
TextWriter tw = new StreamWriter(ms);
tw.Write(file1);
byte[] bytes = ms.ToArray();
ms.Close();
context.Response.Clear();
context.Response.ContentType = "text/plain";
context.Response.AddHeader("content-disposition", "attachment; filename=file.15");
context.Response.AppendHeader("Content-Length", bytes.Length.ToString());
context.Response.BinaryWrite(bytes);
context.Response.Flush();
context.Response.Close();
context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(new { success = "true", message = "File1 Done", File1 = query["File1"], File2 = query["File2"] }));
ただし、このコードを実行するとエラーはなく(サーバー側とクライアント側の両方)、ファイルはダウンロードされません。
なぜあなたはそれを閉じてからフラッシュした後にレスポンスに書き込みますか? –
.aspxページのJavaScriptコードにデータを送り返そうとしています。ハンドラとリクエスト/レスポンスの仕組みがまだ比較的新しいので、私がファイルを出力するすべての例が応答をフラッシュ、クローズ、または終了するたびにこれを行う方法がわかりません。したがって、このハンドラを使用して、両方のタスク(ファイルのダウンロードとデータの返却)を実行するのが難しいです。 – user3148942
あなたは単純にできません。 –