2017-10-18 152 views
0

我試圖從我的.net C#應用程序下載.zip文件。沒有成功。我的代碼如下。文件路徑和名稱是完全有效的,只是似乎沒有下載。請注意,我如何將「應用程序/ x-zip壓縮」和「應用程序/ zip」作爲內容類型(一個註釋掉,都嘗試過)。兩者都不起作用。沒有任何錯誤的跡象,只是沒有下載。下載.zip文件在c#.net

什麼是堅果是我發誓這個代碼在幾個星期前工作,隨着消息彈出,「另存爲」選項被給出,只是因爲任何原因現在不發生。

任何人看到任何錯誤,或者我的問題是否存在於代碼之外的其他地方?

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

若要解決此問題,您必須使用Server.MapPath(...),它將應用程序的根目錄添加到filename。 此外,您應該Flush()End()您的Response正確到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();