asp.net下载文件时会默认调用迅雷下载,但迅雷下载时是下载原码界面而不是文件
在网上找了很多都是问的但没看到什么解决方法,请各位遇到过此问题的大哥给予解答.代码如下:
 protected void ResponseFile(string fileName, string OutFileName)
        {
            //创建一个文件实体,方便对文件操作
            FileInfo finfo = new FileInfo(fileName);
            //清空输出流
            Response.Clear();
            Response.Charset = "utf-8";
            Response.Buffer = true;
            //关闭ViewState以提高速度
            this.EnableViewState = false;
            //定义输出文件编码、类型和文件名
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + OutFileName);
            //保存的文件类型不限,此处类型选择“unknown”。
            Response.ContentType = "application/unknown"; ;
            Response.WriteFile(fileName);
            //清空并关闭输出流
            Response.Flush();
            Response.Close();
            Response.End();
        }

解决方案 »

  1.   

    没有内容输出 或者 response.end()泰安房产网
      

  2.   

    改成流动方式下载
    Response.OuputStream,Write(buffer,0,buffer.length)
      

  3.   

    这篇文章我也看过了,我本来也是照他那个方法做了一下,可是发现还是不行,方法如下:
    说明:当单击下载按钮时从原页面转到DownLoad.aspx页面,并传来两个参数(客户ID和是否允许下载标志,刚传来时,下载标志为false,表示不可以下载)在Page_Load方法中加以下代码
     string customerId = Request.QueryString["customerId"].ToString();//获取从另外页面传来的Id
                string allowDown = Request.QueryString["allowDown"].ToString();//是否允许下载
                if (allowDown == "false")
                {
                    string errMsg = "";
                    if (CreateFile(int.Parse(customerId), ref errMsg))//生成下载文件,生成成功后再转向DownLoad.aspx页面,这里下载标志为true,允许下载
                    {
                        Response.Redirect(String.Format("{0}?customerId={1}&allowDown=true", Request.Path.ToString(), customerId));//重定向到本页面。
                    }
                }
                else if (allowDown == "true")//允许下载
                {
                    DownLoadFile(Path_Backup_Customers + customerId + "\\test.txt", "test.txt");
                }下面是下载文件的方法:
      private void DownLoadFile(string FilePath, string outFileName)
            {
                FileInfo fi = new FileInfo(FilePath);//FilePath为文件在服务器上的地址
                HttpResponse contextResponse = HttpContext.Current.Response;
                contextResponse.Clear();
                contextResponse.Buffer = true;
                contextResponse.Charset = "GB2312"; //设置了类型为中文防止乱码的出现 
                contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", outFileName)); //定义输出文件和文件名 
                contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
                contextResponse.ContentEncoding = Encoding.Default;
                contextResponse.ContentType = "application/octet-stream";
                contextResponse.WriteFile(fi.FullName);
                contextResponse.Flush();
                contextResponse.End(); 
            }
    请您看看我这里是不是什么地方写的不对
      

  4.   

    response.AddHeader("content-disposition", String.Format("attachment;filename={0}", fileName));
    添加上这句就可以强制下载附件了,不会弹出迅雷下载之类的