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