2011-11-22 4 views
2

내 고객이 내 웹 사이트에서 파일을 다운로드하려고합니다. 이 코드 시도 :C#을 사용하여 ASP.Net에서 파일 다운로드

string fName = Server.MapPath((new_exwork.FilePath)); 
FileInfo fi = new FileInfo(fName); 
long sz = fi.Length; 
Response.ClearContent(); 
Response.ContentType = MimeType(Path.GetExtension(fName)); 
Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}", System.IO.Path.GetFileName(fName))); 
Response.AddHeader("Content-Length", sz.ToString("F0")); 
Response.TransmitFile(fName); 
Response.End(); 

을하지만 다음과 같은 예외를 얻을 :

코드가 최적화 또는 기본 프레임이 호출 스택의 상단에 있기 때문에 식을 계산할 수 없습니다.

MIME 타입은

private static string MimeType(string Extension) 
    { 
     string mime = "application/octetstream"; 
     if (string.IsNullOrEmpty(Extension)) 
      return mime; 

     string ext = Extension.ToLower(); 
     Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); 
     if (rk != null && rk.GetValue("Content Type") != null) 
      mime = rk.GetValue("Content Type").ToString(); 
     return mime; 
    } 
+0

해결책 : http://support.microsoft.com/kb/312629/EN-US/ –

+1

ContentType은 파일 확장명이 아니어야합니다 (예 : Word 파일의 경우 application/msword 또는 for). 일반적인 바이너리 파일 : Application/OCTET-STREAM – Magnus

+0

@Magnus'MimeType (string) '에 따라 그는 이미 그것을 설명하고 있을지도 모른다. –

답변

1

확인 몇 가지 제안을 작동합니다.

한 가지 방법은 파일에 대한 하이퍼 링크가있는 것입니다. 클라이언트가 파일을 클릭하면 다운로드 할 것인지 묻습니다.

마우스 오른쪽 버튼을 클릭하고 저장 대상을 다운로드 할 수 있습니다.

당신이 다운로드 여기

의 상태를 추적하기 위해 찾고 있다면 당신이 볼 수있는 링크입니다. FileDownload Tracking Status

관련 문제