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