日期:2014-05-16  浏览次数:20371 次

asp.net中的一个下载功能下载后在360中会出现一个空白页,而且容易被阻止
 FileStream fs = new FileStream(filePath , FileMode . Open);
                byte[] bytes = new byte [ ( int ) fs . Length ];
                fs . Read(bytes , 0 , bytes . Length);
                fs . Close();
                Response . ContentType = "application/octet-stream";
                //通知浏览器下载文件而不是打开
                Response . AddHeader("Content-Disposition" , "attachment;   filename=" + HttpUtility . UrlEncode(FileName , System . Text . Encoding . UTF8));
                Response . BinaryWrite(bytes);
                //Response . Close();
                Response . Flush();
                Response . End();

上面是下载代码
这个哪里的问题?大部分总是阻止了下载,下载后还有空白页!空白页的地址栏什么都没有?
------解决方案--------------------
是在360浏览器中被阻止了吗

LZ看看bytes数组里面   文件字符串有没有读取到

再用其他浏览器测试看看
------解决方案--------------------
看看这段代码,你读取再写出太罗嗦。
    /// <summary>
    /// Response.AddHeader实现下载
    /// </summary>
    /// <param name="filePath">完整的文件路径</param>
    /// <param name="fileName">文件名</param>
    private void DownFile(string filePath, string fileName)
     {
         FileInfo fileInfo = new FileInfo(filePath);
         Response.Clear();
         Response.ClearContent();
         Response.ClearHeaders();
         Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(fileName))););
         Response.AddHeader("Content-Length", fileInfo.Length.ToString());
         Response.AddHeader("Content-Transfer-Encoding", "binary");
         Response.ContentType = "application/octet-stream";
         Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
         Response.WriteFile(fileInfo.FullName);
         Response.Flush();