2012-02-04 77 views
2

我嘗試下載後file.My代碼來刪除文件的另一種方法是到Response.End想()

private void DownloadZipFileDialogue(string strZipFilePath) 
{ 
    Response.ContentType = "application/octet-stream"; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(strZipFilePath)); 
    Response.TransmitFile(strZipFilePath); 
    Response.End(); 
    //File.Delete(strZipFilePath); 
} 

我知道Response.End();後沒有代碼塊execute.If我試圖刪除文件befor Response.End(); zip文件我試過每一個地方。我嘗試:
ApplicationInstance.CompleteRequest();
而不是
Response.End();
但我得到相同的result.zip文件已損壞。我看到這個Is Response.End() considered harmful?但無法找到解決方案。任何想法來解決問題。謝謝。

+0

您可以運行一個計時器,1秒後刪除該文件。 – Aristos 2012-02-04 09:26:03

回答

1

你可以試試這個,

private void DownloadZipFileDialogue(string strZipFilePath) 
{ 
    Response.ContentType = "application/octet-stream"; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(strZipFilePath)); 

    using(Stream input = File.OpenRead(strZipFilePath)){ 

     /// .NET 4.0, use following line if its .NET 4 project 
     input.CopyTo(Response.OutputStream); 

     /// .NET 2.0, use following lines if its .NET 2 project 
     byte[] buffer = new byte[4096]; 
     int count = input.Read(buffer,0,buffer.Length); 
     while(count > 0){ 
      Response.OutputStream.Write(buffer,0,count); 
      count = input.Read(buffer,0,buffer.Length); 
     } 
    } 

    File.Delete(strZipFilePath); 
} 
+0

使它有點清晰。如何使用它而不是我的方法。謝謝。 – 2012-02-04 09:20:00

+0

我得到:文件已損壞,無法打開錯誤消息。請幫忙。 – Pearl 2013-11-07 09:28:50