2013-05-08 2 views
0

나는 서버 측 사람들이 보고서를 생성하는 도트 네트 (dot net) mvc 프로젝트를 가지고 있습니다. 웹에서 보고서를 다운로드 할 수있게하려면 File을 반환하는 컨트롤러에 함수가 있어야합니다.URL을 사용하여 서버에서 파일 다운로드

public FilePathResult DownloadResult(int id) {

 Result res = MyModel.GetResultById(id); 

    if (res.DownloadPath != null) 
    { 
     return File(res.DownloadPath, "application/zip", Path.GetFileName(res.DownloadPath)); 
    } 
} 

는 지금은이 파일을 사용하여 웹 클라이언트 내 문제는 서버에서 반환 된 같은 이름의 다운로드 된 파일을 저장하는 것입니다

WebClient wc = new WebClient(); wc.DownloadFile("ServerUrl" + resultId, filename);

을 다운로드 할 수 있습니다. 컨트롤러의 DownloadResult 메서드는 File [File.GetFileName (res.DownloadPath)] 코드에 표시된 이름을 가진 File을 반환하지만 클라이언트 측에서 파일 서버의 이름이 반환되는지는 알 수 없습니다. wc.DownloadFile에서 로컬 파일 이름을 param으로 지정해야합니다.

서버에서와 동일한 이름으로 로컬로 파일을 저장할 수 있도록 파일 이름 서버를 반환하는 방법이 있습니까?

내용 - 처리를 : 당신은 반환되는 Httpheader 확인할 수 있습니다

답변

0

첨부 파일을; filename = FILENAME

나는 mvc가 이것을 반환한다고 확신하지는 않지만, FilePathResult를 반환하면 Httpheader를 설정할 수 있다고 생각합니다.

Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(res.DownloadPath)); 
+0

내가 webclient.ResponseHeaders에서 응답 헤더를 점점 시도하고는 다음과 같습니다 :

당신은 물론 당신의 응답이를 추가 할 수 [<<<< X-AspNetMvc-버전 콘텐츠 길이 캐시 제어 콘텐츠 유형 날짜 서버 X-ASPNET-버전 X-구동 -에 의해 >>>>] 여기 내용 - 처리를 찾을 수 없습니다 :( –

+0

헤더를 직접 추가해야합니다. 내 대답은 편집하는 방법을 참조하십시오. – Kenneth

+0

안녕하세요, MVC 컨트롤러에서 파일을 반환하기 전에 Response.AppendHeader를 추가했습니다. 여전히 "Content-Disposition"이라는 이름의 헤더 키를 볼 수 없습니다. 다른 곳에서도 변경/수정해야합니까? –

관련 문제