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