C# 将文件保存到数据库中或者从数据库中读取文件一文中介绍的从数据库读取文件内容并保存为文件,那么怎样才能实现不保存为文件直接提供下载呢?
private bool Download(string itemCategory)
{
bool result = false;
string sql = @"select top 1 fileContent
from tableName";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "utf-8";
Response.AppendHeader("Content-Disposition", "attachment;filename=fileName.xls"); //把 attachment 改为 online 则在线打开
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.ContentType = "application/ms-excel";
Page.EnableViewState = false;
Response.BinaryWrite((byte[])reader["fileContent"]);
result = true;
}
reader.Close();
reader.Dispose();
cmd.Dispose();
conn.Close();
conn.Dispose();
return result;
}
函数返回一个 bool 值,成功下载则返回 true,否则返回 false。
调用者可以判断下载是否成功了,若成功则执行 Response.End(),结束页面,失败了的话则可以显示提示内容。
相关阅读