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

asp.net 文件下载的问题!百度上找不到答案!

网站要求 可以用迅雷下载
开始我用流的方法输出文件
但是迅雷下载的文件 都是把页面下载下来了 而不是我要的文件 比如JPG,RAR等
后来我改用直接用链接 <a href="文件名">文件名</a>
这样解决了迅雷不会下载页面 而是直接下载文件
但是问题又来了 下载RAR时 是正常的 弹出迅雷下载框
但是下载jpg和word时 就在游览器上直接打开
我不要这样的效果 我要下载保存在客户的电脑上

大家有什么解决办法没?
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(name.Substring(name.LastIndexOf("\\")), System.Text.Encoding.UTF8));
不用说这种方法了 我以前就是这么写的。。。
或者用这种方法 但是迅雷下载的时候不是下载页面而是下载文件也可以。

谢谢大家了!
--------------------编程问答--------------------

 Dim DownloadFile As New FileInfo(“文件路径”)
                Response.Clear()
                Response.ClearContent()
                Response.ClearHeaders()
                Response.Buffer = False
                Response.ContentType = "application/octet-stream"
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + downLoadPath)
                Response.AppendHeader("Content-Length", DownloadFile.Length.ToString())
                Response.AddHeader("Content-Transfer-Encoding", "binary")
                Response.ContentType = "application/octet-stream"
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312")
                Response.WriteFile(DownloadFile.FullName)

                Response.Flush()

                Response.End()

试试吧,VB的,自己转成C#的 --------------------编程问答-------------------- 谢谢楼上的 但那不是我要的效果
//const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 
                    //byte[] buffer = new byte[ChunkSize];
                    //Response.Clear();
                    //System.IO.FileStream iStream = System.IO.File.OpenRead(name);
                    //long dataLengthToRead = iStream.Length;//获取下载的文件总大小 
                    //Response.ContentType = "application/octet-stream";
                    //Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(name.Substring(name.LastIndexOf("\\")), System.Text.Encoding.UTF8));
                    //Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                    //while (dataLengthToRead > 0 && Response.IsClientConnected)
                    //{
                    //    int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 
                    //    Response.OutputStream.Write(buffer, 0, lengthRead);
                    //    Response.Flush();
                    //    dataLengthToRead = dataLengthToRead - lengthRead;
                    //}
                    //Response.Close();

这是我以前写的 效果就是 我用迅雷下载 下载的就是aspx的页面 而不是我要的文件
比如desg.aspx页面里面有个20100303.rar文件 
用我以前的写法 自然是能顺利下载下来
但是我现在要用迅雷下载 不用系统自带的下载
用迅雷下载下来的 就是desg.aspx了 而不是20100303.rar文件。。。 --------------------编程问答-------------------- http://www.cnblogs.com/smjack/archive/2009/02/26/1398748.html
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,