积极答复者
文件下载

问题
答案
-
你好!下面的代码是可行的
// 1 弹出对话框提示下载文件(不会开新窗口) // 2 隐藏路径 string fPath = Path.Combine(Server.MapPath("Images"), "xxx.htm"); FileStream fFileStream = new FileStream(fPath, FileMode.Open); long fFileSize = fFileStream.Length; Context.Response.ContentType = "application/octet-stream"; Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\""); Context.Response.AddHeader("Content-Length", fFileSize.ToString()); byte[] fFileBuffer = new byte[fFileSize]; fFileStream.Read(fFileBuffer, 0, (int)fFileSize); fFileStream.Close(); Context.Response.BinaryWrite(fFileBuffer); Context.Response.End();
知识改变命运,奋斗成就人生!- 已标记为答案 KeFang Chen 2009年9月30日 2:26
全部回复
-
-
你好 直接设置下载页面的ContentType属性 直接输出流
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond -
if (File.Exists(path))
{
FileInfo fi = new FileInfo(path);HttpContext.Current.Response.Clear();
// //当要下载的文件名是中文时,需加上HttpUtility.UrlEncode
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fi.Name));
HttpContext.Current.Response.AddHeader("Content-Length", fi.Length.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.WriteFile(fi.FullName);
HttpContext.Current.Response.End();
}
else
{
MessageBox.Show(this, "文件不存在");
}
}
catch (Exception _ex)
{
MessageBox.Show(this, _ex.Message);
}
这是我的代码,在当前页面下载附件,并不有下载下来,而是把我当前这个页面下载下来了,如DownLoad.aspx,而不是一个txt的文件 -
你好!下面的代码是可行的
// 1 弹出对话框提示下载文件(不会开新窗口) // 2 隐藏路径 string fPath = Path.Combine(Server.MapPath("Images"), "xxx.htm"); FileStream fFileStream = new FileStream(fPath, FileMode.Open); long fFileSize = fFileStream.Length; Context.Response.ContentType = "application/octet-stream"; Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\""); Context.Response.AddHeader("Content-Length", fFileSize.ToString()); byte[] fFileBuffer = new byte[fFileSize]; fFileStream.Read(fFileBuffer, 0, (int)fFileSize); fFileStream.Close(); Context.Response.BinaryWrite(fFileBuffer); Context.Response.End();
知识改变命运,奋斗成就人生!- 已标记为答案 KeFang Chen 2009年9月30日 2:26