我使用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();
}
请帮帮我。 提前谢谢。
答案 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