2011-11-22 85 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/ – 2011-11-22 22:39:31

+1

的ContentType應該不是文件擴展名,但例如用於Word文件:應用程序/ msword或一個普通的二進制文件:應用/ OCTET-STREAM – Magnus

+0

@Magnus根據'MimeType(字符串)'的作用,他可能已經在考慮這個問題了。 –

回答

1

確定一些建議。

一種方法是隻有一個超鏈接到文件,並與客戶端點擊文件瀏覽器會問他們,如果他們想下載。

你可以讓他們右鍵單擊並執行保存目標下載。

如果您正在尋找追蹤下載

這裏的地位是一個鏈接,你可以看看。 FileDownload Tracking Status