ASP.Net 返回页面而不是请求下载的文件

本文关键字:请求 下载 文件 Net 返回 ASP | 更新日期: 2023-09-27 18:34:50

我有一个DataGrid,其中有一个LinkButton。链接按钮将显示一个文件名,并具有其CommadName 和 CommandArgument 设置,以便在单击按钮时触发 RowCommandFire(...( 事件。 目的是下载由链接按钮链接的文件。但是,在运行时 - 我正在下载页面名称,例如 filesViewPage.aspx而不是请求下载的实际文件。 我有以下代码 - 但它没有按预期下载文件。 我已经确保 IIS 7 MIME 类型条目的"应用程序/八位字节流"的文件扩展名为".*" - 存在。

缺少什么。 请帮忙...


 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;
        }
      }

ASP.Net 返回页面而不是请求下载的文件

如果你的路径是正确的,只需使用这个:

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

而不是:

Response.TransmitFile(fileToDownload.FullName);