asp.net 文件下载功能,如果电脑上装有迅雷,会下载页面的源码 (急)
目前代码如下:string path = System.Web.HttpContext.Current.Request.PhysicalApplicationPath+"uploadFile/部门文件夹/"+dept+"/"+XFileName;
//初始化 FileInfo 类的实例,它作为文件路径的包装
FileInfo fi = new FileInfo(path);
//判断文件是否存在
if (fi.Exists)
{
//将文件保存到本机上
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename="+System.Web.HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(fi.FullName);
Response.End();
}
在网上找过很多种方法 都不行~ 恳请高手指点~~~ 谢谢啦~~ 急~ --------------------编程问答-------------------- 我也碰到过类似的问题,看了这个后解决了参考 --------------------编程问答-------------------- 我都是在同一张页面左处理的 如果重定向本页面的话就会报错了。。~ --------------------编程问答--------------------
好东西。。。 --------------------编程问答-------------------- 还没解决~~ 各位大虾~~ 帮帮忙~ --------------------编程问答-------------------- 这个问题问了不下一百遍。。。
--------------------编程问答-------------------- 网上以前有个解决方案:
你可以试一下
string RECORDFILE;--------------------编程问答-------------------- 添加Download.aspx页。
string http;
RECORDFILE = Request["RECORDFILE"].Replace("|", "");
http = "/down/";
FileInfo DownloadFile = new FileInfo(http+RECORDFILE); //设置要下载的文件
Response.Clear(); //清除缓冲区流中的所有内容输出
Response.ClearHeaders(); //清除缓冲区流中的所有头
Response.Buffer = false; //设置缓冲输出为false
//设置输出流的 HTTP MIME 类型为application/octet-stream
Response.ContentType = "application/octet-stream";//将 HTTP 头添加到输出流
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
//Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());//将指定的文件直接写入 HTTP 内容输出流。
//Response.WriteFile(DownloadFile.FullName);
Response.WriteFile(http + RECORDFILE);
Response.Flush(); //向客户端发送当前所有缓冲的输出
Response.End(); //将当前所有缓冲的输出发送到客户端
FileStream f= new FileStream("", FileMode.Open);
byte[] buffer = new byte[f.Length];
f.Read(buffer, 0, buffer.Length);
f.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("", System.Text.Encoding.UTF8));
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();
--------------------编程问答-------------------- 顶一下人气!!! --------------------编程问答-------------------- 帮顶! --------------------编程问答-------------------- 帮顶! --------------------编程问答--------------------
private void Filedown()
{
string url = Server.MapPath("drop.htm");
FileStream f = new FileStream(url, FileMode.Open);
byte[] buffer = new byte[f.Length];
f.Read(buffer, 0, buffer.Length);
f.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(url, System.Text.Encoding.UTF8));
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();
}
试试这个。 --------------------编程问答-------------------- --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 学习! --------------------编程问答-------------------- 参考学习。 --------------------编程问答-------------------- 新建一个download.aspx?filename='aa'页面专门用来下载,并将要下载的文件名传给这个页面,然后在这个页面写以下代码
string filename=Request.QueryString(["filename"]);
FileInfo DownloadFile = new FileInfo("../FILE/"+filename); //设置要下载的文件
if(DownloadFile.isExists)
{
Response.Clear(); //清除缓冲区流中的所有内容输出
Response.ClearHeaders(); //清除缓冲区流中的所有头
Response.Buffer = false; //设置缓冲输出为false
Response.ContentType = "application/octet-stream";//将 HTTP 头添加到输出流
Response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush(); //向客户端发送当前所有缓冲的输出
Response.End(); //将当前所有缓冲的输出发送到客户端
Response.Close();
}
补充:.NET技术 , ASP.NET