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的新手,并且正在接近将文件存储在文件系统中,但我讨厌放弃。我想我漏掉了一些小东西,但是找不到。

Blob从SQL Server在asp.net (c#)中保存错误的文件名

你把"disposition"拼错了(忘了一个i),应该是:

Response.AppendHeader("Content-Disposition", ("attachment; filename=" + strFilename));