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 文件时,单击“下载文件”按钮后,运行结果,如图,如果指定为附件下载,则弹出“文件下载”对话框。
浙公网安备 33010602011771号