为什么不直接Response.WriteFile呢?
产生的原因像是还没下载完你的Response.End();就给结束掉了因此出问题.你的文本形式的文件内容不会是代码什么吧?
试试把Response.Flush();去掉留下Response.End();看看症状
产生的原因像是还没下载完你的Response.End();就给结束掉了因此出问题.你的文本形式的文件内容不会是代码什么吧?
试试把Response.Flush();去掉留下Response.End();看看症状
调试欢乐多
文件后就出现此页面的HTML代码
System.Threading.ThreadAbortException: 正在中止线程。
在 System.Threading.Thread.AbortInternal()
在 System.Threading.Thread.Abort(Object stateInfo)
在 System.Web.HttpResponse.End()
在 dn2.Page_Load(Object sender, EventArgs e) 位置 e:\Inetpub\wwwroot\1\dn2.aspx.cs:行号 63
留下Response.End();
看看结果
在 System.Threading.Thread.AbortInternal()
在 System.Threading.Thread.Abort(Object stateInfo)
在 System.Web.HttpResponse.End()
在 dn2.Page_Load(Object sender, EventArgs e) 位置 e:\Inetpub\wwwroot\1\dn2.aspx.cs:行号 63
我用Response.WriteFile
我在目录中建1.txt
写个“颠三倒四但是”
点击下载,选择“打开”
打开后发现:
颠三倒四但是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
无标题页
</title></head>
<body>
<form name="form1" method="post" action="dn2.aspx?id=7" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGQUXe5j+vn09IoesWG/Rq/4+7OOTA==" />
</div> <div>
</div>
</form>
</body>
</html>
怎么办?疯了
System.IO.FileStream fs = System.IO.File.OpenRead(exportFile);
byte[] FileData = new byte[fs.Length];
fs.Read(FileData, 0, (int)fs.Length);
Response.Clear();
Response.AddHeader("Content-Type", "application/octet-stream");
string FileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(exportFileName));
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Convert.ToChar(34) + FileName
+ System.Convert.ToChar(34));
Response.AddHeader("Content-Length", fs.Length.ToString());
Response.BinaryWrite(FileData);
fs.Close();
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();