2013-02-11 2 views
-1

Я передаю CSV-файл в Internet Explorer. В конце потоковой передачи Internet Explorer представляет диалог Open, Save и Cancel. Если вы подождите 30 секунд после появления диалогового окна и нажмите кнопку «Открыть», Internet Explorer ничего не сделает. Это отлично работает в Firefox. Нужна ли мне другая команда, кроме Flush и End on Response? Вот код, который у меня есть:Как подключить Internet Explorer к потоку?

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = ReportService.GetAllOwnerAircraftPaymentInformation(); 

    //Generate the report 
    using (MemoryStream stream = new MemoryStream()) 
    { 
     StreamWriter writer = new StreamWriter(stream); 
     CsvHelper csvHelper = new CsvHelper(); 

     csvHelper.DataTableToCsv(writer, dt); 

     writer.Flush(); 

     //Send it to the browser 
     stream.Seek(0, SeekOrigin.Begin); 

     string fileName = string.Format("MassAVRMSDataExport{0}.csv", DateTime.Now.ToString("yyyyMMddhhmmss")); 

     Response.ClearHeaders(); 
     Response.Clear(); 
     Response.ContentType = "application/octet-stream"; 
     Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); 
     Response.AddHeader("Content-Length", stream.Length.ToString(CultureInfo.InvariantCulture)); 
     StreamHelper.CopyStream(stream, Response.OutputStream); 
     Response.Flush(); 
     Response.End(); 
    } 
} 
+1

после первого 'Response.ContentTye 'попробуйте добавить эту строку' Response.ContentType = "application/vnd.ms-excel" 'также вы можете добавить эту строку также' Response.ContentType = "application/download" 'после строки тоже .. попробуйте обе строки .. – MethodMan

+0

Кажется, интернет Проводнику нужен тип содержимого приложения/загрузки. Это сработало. Спасибо. –

+0

Я добавлю это как ответ, и вы можете принять его, если хотите спасибо – MethodMan

ответ

0

Greg вам нужно добавить следующее при работе с IE Explorer

Response.ContentType = "application/download" 
0

установка Try:

stream.Position = 0; 
StreamHelper.CopyStream(stream, Response.OutputStream); 
Смежные вопросы