ASP.NET从SQL Server2008导出文件到WEBFORM中显示

ASP.NET从SQL Server2008导出文件
ASP.NET从SQL Server2008导出文件并输入到页面上主要使用到对象Response的BinaryWrite属性。该属性将一个二进制字符串

写入HTTP输入流。
1.添加代码
切换到设计视图,双击“下载文件”按钮,添加“下载文件”按钮事件代码,代码如下:
protected void fileLoad_Click(object sender,EventArgs e)    //导出文件
{
string connstr=@“Data Source=Http://www.hqqrc.com\SQL2008;Initial Catalog=VarFile;Integrated Security=True”;     //链接

数据库字符串
string sqlstr="select * from FileInOut";
SqlConnection con=new SqlConnection(connstr);
SqlCommand cmd=new SqlCommand(sqlstr,con);
con.Open();
SqlDataReader sqlread=cmd.ExecuteReader(CommandBehavior.CloseConnection);
if(slqread.HasRows)      //如果有数据
{
sqlread.Read();
string contenttype=sqlread.GetString(0);              //获取文件类型
//判断文件是否为空,若不为空则放入字节数组contents内
byte[] contents=sqlread.IsDBNull(1)?null:(byte[])sqlread[1];
Response.Clear();
Response.ContentType=contenttype;                  //设置输出流的Http mime类型
Response.ContentEncoding=Encoding.GetEncoding("gb2312");

Response.AddHeader("Content-Disposition",@"online;");   //指定在线打开
Response.AppendHeader("Content-Disposition","attachment");   //attachment 指定附件下载
if(contenttype="text/plain")   //如果是text文件
{
    Rseponse.Output.Write(Encoding.Default.GetString(contents));
    Response.End();                //将当前所有缓冲的输出发送到客户端,停止该页的执行
}
else
{
Response.BinaryWrite(contents);   //将二进制的字符串写入Http输入流

}
}

else
{ Response.Write("<script>alert('数据库中没有文件')</script>");   }
if(con.State=ConnectionState.Open)   //如果没有关闭数据库连接则关闭
{
con.Close();
}

}

2.导出文件
当数据库中导入的是PDF 文件时,单击“下载文件”按钮后,运行结果,如图,如果指定为附件下载,则弹出“文件下载”对话框。

posted on 2010-09-11 08:36  Cleak  阅读(184)  评论(0)    收藏  举报

导航