asp.net 文件下载功能,如果电脑上装有迅雷,会下载页面的源码 (急)

zhuangxianbo2009 2010-06-11 11:20:52
目前代码如下:

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();
}



在网上找过很多种方法 都不行~ 恳请高手指点~~~ 谢谢啦~~ 急~
...全文
736 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongyanjava 2011-12-06
  • 打赏
  • 举报
回复
新建一个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();
}
szjarvis 2011-08-31
  • 打赏
  • 举报
回复
参考学习。
ljsheng 2011-05-31
  • 打赏
  • 举报
回复
学习!
  • 打赏
  • 举报
回复
学习了
fk1984316 2011-05-31
  • 打赏
  • 举报
回复
lirenniao 2011-05-31
  • 打赏
  • 举报
回复

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();
}

试试这个。
damon08708 2011-05-31
  • 打赏
  • 举报
回复
帮顶!
qiqishardgel 2010-06-12
  • 打赏
  • 举报
回复
帮顶!
Seven_lau 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tianshikuqi8 的回复:]

我也碰到过类似的问题,看了这个后解决了参考
[/Quote]

好东西。。。
zhuangxianbo2009 2010-06-11
  • 打赏
  • 举报
回复
我都是在同一张页面左处理的 如果重定向本页面的话就会报错了。。~
辰爸 2010-06-11
  • 打赏
  • 举报
回复
我也碰到过类似的问题,看了这个后解决了参考
a19895161989516 2010-06-11
  • 打赏
  • 举报
回复
顶一下人气!!!
wuyq11 2010-06-11
  • 打赏
  • 举报
回复
添加Download.aspx页。

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();

皇城龙三 2010-06-11
  • 打赏
  • 举报
回复
网上以前有个解决方案:

你可以试一下

string RECORDFILE;
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(); //将当前所有缓冲的输出发送到客户端
丰云 2010-06-11
  • 打赏
  • 举报
回复
这个问题问了不下一百遍。。。
zhuangxianbo2009 2010-06-11
  • 打赏
  • 举报
回复
还没解决~~ 各位大虾~~ 帮帮忙~

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧