当前位置:编程学习 > C#/ASP.NET >>

Asp.net 流方式下载,迅雷下载出错

我碰到了这个问题跟大家探讨探讨,如果哪位有好的方法,请告诉我.
     有一个系统,用户上传的文件以二进制流的方式存储在数据库,整个系统采用的是form认证. 在某包含附件的页面,用户点击下载按钮时javascript生成一个iframe  ,然后由这个iframe去请求下载页面.下载页面的Onload方法中通过附件的ID获取到二进制流,向客户端发送.   
     IE自身下载正常.但是迅雷下载每次都下载的是aspx页面.  
  
     我尝试了许多方法:
     1:生成临时文件,然后Response.Redirect到这个临时文件. 运行时发现迅雷下载提示框内文件名显示正确了,但下载下载的却是Login.aspx. 我猜想是因为form认证阻止了迅雷访问下载页面. 于是我配置webconfig下载目录权限为任何用户,但没有作用.
     2: 我尝试在下载页面中把附件ID写死, 这次下载文件不需要传递参数,发现迅雷下载正常. 但迅雷下载提示框内文件名是下载页面的名称download.aspx
     
     贴出我的下载代码:
        byte[] buffer=GetFileFromDB(attachId);       

        string fileName = HttpUtility.UrlEncode(attach.AttachName);

        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();        
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", buffer.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.BinaryWrite(buffer);
        Response.Flush();
        Response.End();
--------------------编程问答-------------------- 跟你当前的URL有关!!! --------------------编程问答-------------------- http://www.cnblogs.com/smjack/archive/2009/02/26/1398748.html
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,