2011-03-29 5 views
1

사용자에게 저장 대화 상자를 표시하려고합니다. 파일 taype는 .wav입니다. 액션이-MVC를 저장하라는 메시지를 표시합니다.

public ActionResult MergeSelectedRecords(string mergeFileName, List<String> selectedRecords) 
    { 
     string urlFilePath=GetFilePath(); //get virtual path of file.  

     ControllerContext.HttpContext.Response.AddHeader("content-disposition",  "attachment; filename=" + "cccc");  

     string filePath = ControllerContext.HttpContext.Server.MapPath(urlFilePath); 
     return File(filePath, ".wav"); 
     } 

SAMPL 파일 경로 아래에 도시되어있다 "HTTP/로컬 호스트 : 2,694/DATA/MERGE/OUT/1/CCCC"

하지만

'http:/localhost:2694/DATA/MERGE/OUT/1/cccc' is not a valid virtual path. 
아래와 같이 에러를 도시

사용자에게 파일 저장 대화 상자를 표시하는 올바른 방법입니까?

편집

때때로 사용자에 대한 availbale 파일이 없습니다. 그래서 urlFilePath = ""인 경우에만 경고를 표시하고 싶습니다.

난 빈 resul.And를 반환 할 수있는 방법에는 파일 경로를 사용할 수없는 경우

당신이 MapPath 방법에 전달하는 내가

public ActionResult MergeSelectedRecords(string mergeFileName, List<String> selectedRecords) 
    { 
     string urlFilePath=GetFilePath(); //get virtual path of file.  
    if(urlFilePath!="") 
     { 
     ControllerContext.HttpContext.Response.AddHeader("content-disposition",  "attachment; filename=" + "cccc");  

     string filePath = ControllerContext.HttpContext.Server.MapPath(urlFilePath); 
     return File(filePath, ".wav"); 
     } 
    else 
     { 
      //what i return here? If it possible i only want to display an alert .But the page user viewing cannot refreshed 
     } 
     } 

답변

1

urlFilePath 인수 아래 hown되어 원하는 일을 user..The에게 경고를 만들 ~/으로 시작하는 동일한 사이트 내의 상대 URL이어야합니다. 예 :

public ActionResult MergeSelectedRecords(string mergeFileName, List<String> selectedRecords) 
{ 
    string urlFilePath = "~/Files/ccc.wav"; 
    string filePath = Server.MapPath(urlFilePath); 
    return File(filePath, ".wav", "ccc"); 
} 

URL이 귀하의 사이트에 속하지 않으면 먼저 파일을 다운로드해야합니다. 예 :

public ActionResult MergeSelectedRecords(string mergeFileName, List<String> selectedRecords) 
{ 
    using (var client = new WebClient()) 
    { 
     byte[] file = client.DownloadData("http://foo.com/ccc.wav"); 
     return File(file, ".wav", "ccc"); 
    } 
} 
+0

@ Darin이 작동합니다. Thnx. 하지만 만약 내가 어떻게 행동에서 돌아갈 수 반환 할 파일이 없어. (나는 다시 게시에 발생하는보기를 새로 고치지 않습니다) –

+0

@ Null 포인터, 귀하의 질문을 이해가 안돼. 제발 좀 더 자세히 설명해 주시겠습니까? –

+0

@Sarin, Thanx ... 편집 된 질문 –

관련 문제