2014-01-29 2 views
0

У меня есть .net-приложение, которое извлекает большой документ из службы REST, которая должна быть загружена на клиентский хост.Данные флеша на Response.outputStream

Я хочу передать данные так, чтобы они, как представляется, загружались непосредственно на клиента. Моя проблема заключается в том, что диалоговое окно «Загрузка файла» не отображается до вызова Response.End(). Я хочу, чтобы он показывал instanlty.

// 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 and AutoFlush должен делать трюк здесь !! ?? Может ли кто-нибудь увидеть, что я делаю неправильно?

Благодаря

ответ

1

Вы могли бы хотеть, чтобы попытаться очистить HttpResponse в то время как петля:

while ((theLine = inputStream.ReadLine()) != null) 
{ 
     streamWriter.WriteLine(theLine); 
     streamWriter.Flush(); 
     Response.Flush(); 
} 
2
Response.BufferOutput = false; 

Помещенный, что, прежде чем начать записывать данные в поток ответа.

Смежные вопросы