显示或下载使用ASP.NET保存在SQL Server中的文档

时间:2019-03-09 06:27:01

标签: html sql-server pdf

我的文档以varbinary(MAX)的形式保存在SQL Server数据库中。

我正在尝试使用以下代码从数据库中检索文档。我面临的问题是,无论使用哪种浏览器,我都不会得到任何回应。没有对话框,浏览器仅显示转圈。 任何建议将不胜感激..

if (e.ButtonID != "Download") 
     return;

int id = 2;
byte[] bytes;
string fileName, contentType;

string constr = ConfigurationManager.ConnectionStrings["bexsConnectionString"].ConnectionString;

using (SqlConnection con = new SqlConnection(constr))
{
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.CommandText = "select Title, WillData, MIMEType from Will_documents where Doc_id = @Id";
        cmd.Parameters.AddWithValue("@Id", id);
        cmd.Connection = con;

        con.Open();

        using (SqlDataReader sdr = cmd.ExecuteReader())
        {
            sdr.Read();
            bytes = (byte[])sdr["WillData"];
            contentType = sdr["MIMEType"].ToString();
            fileName = sdr["Title"].ToString();

            Response.Buffer = true;
            Response.Charset = "";
            Response.Clear();
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = contentType;
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
        }

        con.Close();
    }
}    

1 个答案:

答案 0 :(得分:0)

最终使它正常工作。

Response.ClearContent();
Response.ContentType = "application/octetstream";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", name));
Response.AddHeader("Content-Length", documentBytes.Length.ToString());
Response.BinaryWrite(documentBytes);
Response.Flush();
Response.Close();