2014-12-22 56 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); 
相关问题