Response.TransmitFile()无法传输空文件

时间:2015-08-14 08:18:13

标签: c# asp.net http gridview response.transmitfile

我在GridView中实现了一个列,允许用户在单击文件名时下载文件(文件存储在我项目的Uploads文件夹中)。

当文件中有一些数据时,代码工作正常,即用户可以点击文件然后下载,但是当用户点击一个空的文件时(如空的.docx文件) )显示空白页而不是下载文件。

这里是代码:

else if (e.CommandName == "Download")
        {
            Response.Clear();

            if (File.Exists(Server.MapPath("~/Uploads/") + e.CommandArgument))
            {               
                Response.ContentType = "application/octet-stream";
                Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument.ToString());
                Response.TransmitFile(Server.MapPath("~/Uploads/") + e.CommandArgument);
                Response.End();
            }
            else
            {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = "File Not Found";                
            }           
        }

我已经在Chrome,Mozilla和IExplorer上进行了测试。

1 个答案:

答案 0 :(得分:0)

你需要改变这一行:

Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument.ToString());

这个:

Response.AppendHeader("Content-Disposition", filename=\"" + e.CommandArgument.ToString()) \"";