关于response,下载文件
将一个文件上传到数据库,在下载页面.cs文件中写:Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode((string)reader["name"], System.Text.Encoding.UTF8));
Response.ContentType = (string)reader["mime"];
Response.OutputStream.Write((byte[])reader["data"], 0, (int)reader["size"]);
Response.Flush();
Response.End();
如果下载的是文本形式的文件,打开后在文件后有
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();
文件后就出现此页面的HTML代码
怎么回事? --------------------编程问答-------------------- 为什么不直接Response.WriteFile呢?
产生的原因像是还没下载完你的Response.End();就给结束掉了因此出问题.你的文本形式的文件内容不会是代码什么吧?
试试把Response.Flush();去掉留下Response.End();看看症状 --------------------编程问答-------------------- 如去掉Response.End();
文件后就出现此页面的HTML代码 --------------------编程问答-------------------- 把Response.Flush();去掉留下Response.End();看看症状
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.WriteFile用这个吧. --------------------编程问答-------------------- 把Response.Flush();去掉.
留下Response.End();
看看结果 --------------------编程问答-------------------- 先得这样看看
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
--------------------编程问答-------------------- 帮LZ顶 --------------------编程问答-------------------- Response.WriteFile
怎么用? --------------------编程问答-------------------- 还是文本的问题
我用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>
怎么办?
疯了 --------------------编程问答-------------------- Response.End是必须的. --------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 强烈要求
解决下载文本格式文件的问题 --------------------编程问答-------------------- 帮LZ顶 --------------------编程问答-------------------- 谢 --------------------编程问答-------------------- 我也遇到这个问题,楼主找到解决方法了吗? --------------------编程问答-------------------- 最好在Response.End之前把数据库connection,reader都close或者dispose掉 --------------------编程问答-------------------- 其他错误引起的吧! --------------------编程问答-------------------- 友情UP~ --------------------编程问答-------------------- 遇到同样的问题,楼主给个办法吧!!! --------------------编程问答-------------------- 把Response.End()换成HttpContext.Current.ApplicationInstance.CompleteRequest();试一试。 --------------------编程问答-------------------- 供参考的代码:
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();
补充:.NET技术 , ASP.NET