Blob从SQL Server在asp.net (c#)中保存错误的文件名
本文关键字:保存 错误 文件名 SQL Server net asp Blob | 更新日期: 2023-09-27 18:07:05
我试图使用。net中的gridview允许用户从存储在sql server表中的存储库下载文件作为varbinary(max)。上传过程没有问题。问题在于检索。我在gridview的每一行上都使用了一个链接按钮,以便下载文件。当点击"下载"链接按钮时,我看到一个保存/打开框(IE)。但是,要保存的文件名是.aspx页的名称,而不是表中存储的文件名。
以下是linkbutton click事件的代码: protected void lbtnDownload_Click(object sender, EventArgs e)
{
int gmsrId = int.Parse((sender as LinkButton).CommandArgument);
byte[] bytes;
string strFilename = String.Empty;
string strContentType = String.Empty;
string strConnString = dbUtilities.GetConnectionString();
using (SqlConnection sqlCon = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SP_SelectDocument";
cmd.Connection = sqlCon;
cmd.Parameters.AddWithValue("@intID", gmsrId);
sqlCon.Open();
using (SqlDataReader sdrDocument = cmd.ExecuteReader())
{
sdrDocument.Read();
bytes = (byte[])sdrDocument["gmsr_Document"];
strContentType = sdrDocument["gmsr_ContentType"].ToString();
strFilename = sdrDocument["gmsr_Filename"].ToString();
lblMessage.Text = "Filename = " + strFilename;
sqlCon.Close();
}
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = strContentType;
Response.AppendHeader("Content-Dispositon", ("attachment; filename=" + strFilename));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
}
}
我是从表中存储/检索blob的新手,并且正在接近将文件存储在文件系统中,但我讨厌放弃。我想我漏掉了一些小东西,但是找不到。
你把"disposition"拼错了(忘了一个i),应该是:
Response.AppendHeader("Content-Disposition", ("attachment; filename=" + strFilename));