2017-10-18 3 views
0

내 .net C# 응용 프로그램에서 .zip 파일을 다운로드하려고합니다. 성공하지 못했습니다. 내 코드는 아래와 같습니다. 파일 경로와 이름이 완전히 유효하며 아무 것도 다운로드하지 않는 것 같습니다. "application/x-zip-compressed"및 "application/zip"을 모두 콘텐츠 유형으로 사용하는 방법에 유의하십시오. 둘 다 작동하지 않습니다. 어떤 오류 표시도 없으며 다운로드 할 필요가 없습니다.C에서 다운로드 .zip 파일

나는이 코드가 몇 주 전에 작동했는데, "다른 이름으로 저장"옵션이 주어지면서 어떤 이유로 든 지금 일어나지 않았다고 맹세합니다.

아무 문제가 보이지 않거나 내 문제가 코드 외부에있는 경우 ??

FileInfo file = new FileInfo(filepath); 

Response.Clear(); 

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 

Response.AddHeader("Content-Length", file.Length.ToString()); 

//Response.ContentType = "application/x-zip-compressed"; 
Response.ContentType = "application/zip"; 
Response.WriteFile(file.FullName); 
+0

그래서 ... 무엇이 문제입니까? 너 뭐야? 오류가 있습니까? 교수형이야? – JuanR

답변

0

난 당신이 Response.AddHeader("Content-Length", file.Length.ToString());에서 FileNotFoundException을 받고있어 같은데요.

이 문제를 해결하려면 응용 프로그램의 루트 디렉토리를 filename에 추가하는 Server.MapPath(...)을 사용해야합니다. 또한 ResponseFlush()End()을 입력하고 force the client으로 받아야합니다.

string filename = "myfile.zip"; 
string serverpath = Server.MapPath($"~/{filename}"); 
FileInfo file = new FileInfo(serverpath); 
Response.Clear(); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "application/zip"; 
Response.WriteFile(file.FullName); 
Response.Flush(); 
Response.End();