2012-02-24 2 views
0

내가 가진 일부 데이터에 대해 CSV 내보내기를 만들려고합니다. Firefox와 Chrome에서 아주 간단하고 멋지게 작동하지만 Internet Explorer에서 파일을 다운로드 할 수 없다는 메시지가 나타납니다. 다른 오류 메시지가 없으며 Visual Studio에서 중단이없고 찾을 수있는 디버깅 정보가 없습니다.MVC3 - Internet Explorer에서 CSV 파일 내보내기 문제

여기 내 코드가 있습니다. 아마도 내가 뭔가 잘못하고있는 것 같아?

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

내 : 당신이 오히려 (위 상당) 그것에 대해 간단한 것

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

또는 경우 : 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

0

아마하고자 할 때 IE가 표준을 따르기 때문에 내용 유형/콘텐츠 Dispositon 함께 할 수있는 뭔가가.

당신은 내용 - 처리 헤더를 추가해야 할 수 밖에 ASP MVC3 FileResult with accents + IE8 - bugged?

2

확인합니다. 그것은 사기 보일 수 대답 할

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

을하지만, 분명히 여러 내용 - 처리 헤더를 받고이고 그것을 허용하지 않기 때문에 지금 크롬이 다운로드되지 않습니다. –

관련 문제