2014-12-22 88 views
0

我有一個DataGrid,我有一個LinkBut​​ton。 LinkBut​​ton將顯示一個文件名,並設置它的 CommadName和CommandArgument,以便RowCommandFire(...)事件在單擊該按鈕時觸發。目的是下載由LinkBut​​ton鏈接的文件。 但是,在運行時 - 我正在下載頁面名稱(如filesViewPage.aspx),而不是請求下載的實際文件。我有以下代碼 - 但它不是應該下載文件。我已確保文件擴展名爲「。*」的IIS 7 MIME類型條目「application/octet-stream」存在。ASP.Net返回頁面而不是請求下載的文件

缺少什麼。請幫助...


protected void RowCommandFire(object sender, GridViewCommandEventArgs e) { 
     if (e.CommandName == "DownloadFile") 
     { 
     try {   
      Response.Clear(); 
      Response.ClearContent(); 
      Response.ClearHeaders(); 
      FileInfo fileToDownload = new FileInfo(Server.MapPath("~/Uploads/") + e.CommandArgument); 
      //byte[] bytes = File.ReadAllBytes(fileToDownload.FullName); 
      if (fileToDownload.Exists) { 
      string filename = e.CommandArgument.ToString(); 
      Response.ContentType = "application/octet-stream"; 
      Response.AppendHeader("content-disposition", "attachment; filename=" + filename); 
      Response.AppendHeader("content-length", fileToDownload.Length.ToString()); 
      Response.TransmitFile(fileToDownload.FullName); 
      //Response.WriteFile(fileToDownload.FullName); 
      //Response.BinaryWrite(bytes); 
      Response.Flush(); 
      Response.End(); 
      } 
     } catch (Exception ex) { 
      msg.Text = ex.Message; 
     } 
     } 
+0

告訴我,如果我的解決方案幫助您! – mybirthname

回答

0

如果您的路徑是正確的只是使用:

Response.BinaryWrite(File.ReadAllBytes(Server.MapPath("~/Uploads/") + e.CommandArgument)); 

相反的:

Response.TransmitFile(fileToDownload.FullName); 
相關問題