public void download()
{//下载地址
// string destFileName="";
string sel_sql="select FileUrl from DownLoad where FileID="+Request.QueryString["destFileName"].ToString();
destFileName+=FileUrl;
destFileName = Server.MapPath(".")+destFileName;
destFileName = Server.UrlDecode(destFileName);
 

if(File.Exists(destFileName))
{
FileInfo fi = new FileInfo(destFileName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
   
Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length",fi.Length.ToString());
Response.ContentType="application/octet-stream";
Response.WriteFile(destFileName);
Response.Flush();
Response.End();
}
else
{
Response.Write("<script langauge=javascript>alert('文件不存在!');history.go(-1);</script>");
Response.End();
}
}
为什么点下载的时候没反应呢?

解决方案 »

  1.   

    下载的代码没问题,你是用什么按钮点击来触发这个download的,也许是人品问题,呵呵
      

  2.   

    如果这段代码确实执行了,那肯定是destFileName取值不对,文件名在服务器上不存在
      

  3.   

    按钮是用linkbutton做的(在datagrid里)
    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    if(e.CommandName=="download")
    {
                       download();
    }
    }
      

  4.   

    文件是放在跟目录下的
    我觉得也是destFileName的问题,不晓得么样改??
      

  5.   

    string sel_sql="select FileUrl from DownLoad where FileID="+Request.QueryString["destFileName"].ToString();
     未将对象引用设置到对象的实例。
    提示的错误
      

  6.   

    改成这样
    string sel_sql="select FileUrl from DownLoad where FileID='"+Request.QueryString["destFileName"].ToString()+"'";