使用asp.net webform从c#中的数据库中检索文件

时间:2015-12-08 08:53:58

标签: c#

我使用asp.net Web表单来保存和检索数据库中的数据。我可以将它保存在数据库中,并且检索它时总是下载存储在数据库中的第一个文件。

用于下载的代码是:

   private void download(int id)
    {
        DataTable dt = new DataTable();
        using (SqlConnection con = new SqlConnection(conn))
        {
            SqlCommand cmd = new SqlCommand("GetFiles", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@Id", SqlDbType.Int).Value = id;              
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            dt.Load(reader);
        }
        string Name = dt.Rows[0]["FileName"].ToString();
        byte[] documentBytes = (byte[])dt.Rows[0]["Data"];
        Response.ClearContent();
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition", string.Format("attachment;FileName={0}", Name));
        Response.AddHeader("Content-Length",documentBytes.Length.ToString());
        Response.BinaryWrite(documentBytes);
        Response.Flush();
        Response.Close();
    }

请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

因此,您似乎忘记在存储过程中添加WHERE - 子句。而不是

CREATE procedure [dbo].[GetFiles] (@Id int) as 
SELECT Id,Data,FileName,FileExtension 
FROM FilesData

您需要应用WHERE的过滤器:

CREATE procedure [dbo].[GetFiles] (@Id int) as 
SELECT Id,Data,FileName,FileExtension 
FROM FilesData
WHERE Id = @Id