2012-02-24 3 views
0

私はいくつかのデータのためのCSVエクスポートを作成しようとしています。 FirefoxとChromeでうまくいくように見えますが、Internet Explorerではファイルをダウンロードできないというメッセージが表示されます。他にエラーメッセージがなく、Visual Studioにブレークがなく、デバッグ情報が見つかりません。MVC3からのCSVファイルのエクスポート - Internet Explorerの問題

ここに私のコードです。おそらく私は何か間違っていますか?

public ActionResult ExportStudentsCSV(IEnumerable<Student> students) { 
    MemoryStream output = new MemoryStream(); 
    StreamWriter writer = new StreamWriter(output, System.Text.Encoding.UTF8); 
    writer.WriteLine("Username,Year Level,School Name,State,Date Joined"); 
    foreach (Student student in students) { 
     writer.WriteLine(
        "\"" + student.username 
      + "\",\"" + student.year_level 
      + "\",\"" + student.SchoolName 
      + "\",\"" + student.state 
      + "\",\"" + student.join_date 
      + "\"" 
     ); 
    } 
    writer.Flush(); 
    output.Seek(0, SeekOrigin.Begin); 

    return File(output, "text/csv", "Students_" + DateTime.Now.ToShortDateString().Replace('/', '-') + ".csv"); 
} 

そして、私は私のコントローラでこの関数を呼んでいる:

return ExportStudentsCSV(model.StudentReport.StudentList); 
+0

@qes良い点、感謝 –

答えて

1

それは私に答えることが危険なように見えるかもしれ戻す前に、あなたのExportStudentsCSV機能で

、私の経験は誰かを助けるかもしれないと思った。もう少し掘り下げて、DataTablesとFileResultから継承する特定のCsvActionResultを使用してこれを行う完全な代替方法を発見しました。
は、この主旨を参照してください:これはIEのためにうまく働いhttps://gist.github.com/777376

+0

接続がSSLの場合、IE7はFileまたはFileContentResultで設定されていないContent-Lengthヘッダーを設定する必要があります。私はMVC 3とIIS 7があなたのためにこれを世話してくれると信じています。しかし、IE7を使用してIIS 6上でファイルをダウンロードすると、SSL接続上にContent-Lengthヘッダーがないと問題が発生します。 – James

2

をチェックしてくださいあなたがのContent-Dispositionヘッダーを追加する必要があります。

var cd = new System.Net.Mime.ContentDisposition(); 
cd.FileName = "filename.csv"; 
Response.AddHeader("Content-Disposition", cd.ToString()); 

それとも、むしろそれについて簡単なことだ場合は(上記に相当する)::

Response.AddHeader("Content-Disposition", "attachment;filename=filename.csv"); 
+0

を、それは明らかに複数のContent-処分ヘッダを受けていますし、それを許可されませんので、今Chromeはダウンロードされません。 –

関連する問題