保存后文件大小增加1KB

时间:2015-01-16 12:35:24

标签: c# sql sql-server

我正在SQL Server列中保存图像文件(数据类型varbinary(max))。将文件保存在数据库中的代码:

Stream fs = imgUpload.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);

SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ToString());
conn.Open();

using (SqlCommand cmd = new SqlCommand("update tbEHUsers set photo=@binaryValue where UserID="+Session["UserID"].ToString(), conn))
{                        
    cmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, -1).Value = bytes;
    cmd.ExecuteNonQuery();
}
conn.Close();

从SQL Server获取图像数据:

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ToString());
con.Open();
SqlCommand CMD = new SqlCommand("SELECT Photo from tbEHUsers where UserID=" + Session["UserID"], con);
SqlDataReader rdr = CMD.ExecuteReader();
byte[] imgArray = null;

while (rdr.Read())
{
        imgArray = (byte[])rdr["Photo"];
}

File.WriteAllBytes("D:\\Test12345.jpg", imgArray);

我上传的文件的原始大小为858KB但是从数据库检索并使用File.WriteAllBytes方法再次保存后,它增加到859KB。现在,当我尝试打开此文件时,我发现文件错误已损坏'。保存和检索时,字节数组大小相同。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

使用FileUpload.PostedFile时,需要重置InputStream以从头开始。因此,在代码之上添加以下行:

imgUpload.PostedFile.InputStream.Seek(0, SeekOrigin.Begin);