1、我先解释你不懂的代码吧
Response.AddHeader("Content-Disposition", "attachment; filename=" +
//这一句是添加报文头,在客户端出现,打开,另存为,取消的对话框
HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
//防止文件名含有中文,而进行编码,这样中文就不会显示乱码了
Response.BinaryWrite(bytes);
//向客户端写数据
Response.Flush();
//表示向客户端一点一点的写数据,流动的方式,而不会使得数据堆在内存中,造成客户端假死的现象
//Response.End();
结束
2、至于你说的其中response一直说上下文中没有
你试下把fs.Close()放到Response.Flush()后面或者Response.BinaryWrite(bytes)后面
///
/// 文件下载
///
///
/// 文件ID
///文件二进制流
public void ProcessRequest(HttpContext context)
{
string sid = context.Request.QueryString["sid"];
int fileID = Convert.ToInt32(context.Request.QueryString["fileID"]);
string fileName = context.Request.QueryString["fileName"];
int resultCode = 0;
//以字符流的形式下载文件
byte[] bytes = 文件二进制流;
context.Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
context.Response.BinaryWrite(bytes);
context.Response.Flush();
context.Response.End();
}
我这个是一般处理程序来控制文件下载
你的问题应该是没有实例化Response