【发布时间】:2014-02-21 02:08:18
【问题描述】:
我有一个 .net Web 应用程序,它从 REST 服务中获取一个大文档,该文档应该下载到客户端主机。
我想流式传输数据,以便它看起来直接在客户端上下载。我的问题是“文件下载”对话框在调用 Response.End() 之前不会显示。我希望它立即显示出来。
// class extends System.Web.UI.Page
HttpClient client = new HttpClient();
// Add an Accept header for the mediatype format.
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType));
Stream stream = client.GetStreamAsync("http://www.aaa.se/theurl").Result;
StreamReader inputStream = new StreamReader(stream);
Response.ContentType = "text/plain";
Response.AppendHeader("Content-Disposition", "attachment; filename=file.txt");
using (StreamWriter streamWriter = new StreamWriter(Response.OutputStream))
{
streamWriter.AutoFlush = true;
string theLine = null;
while ((theLine = inputStream.ReadLine()) != null)
{
streamWriter.WriteLine(theLine);
streamWriter.Flush(); // <<<---- HERE FileDialog should pop up!
}
}
Response.End(); // <<<--- BUT it pops up here!
Flush 和 AutoFlush 应该在这里解决问题!??谁能看到我做错了什么?
谢谢
【问题讨论】:
标签: c# .net streamreader streamwriter flush