使用c#在asp.net中的SQL Server中保存和检索图像

时间:2014-02-19 12:05:41

标签: c# asp.net sql sql-server image

我正在尝试将图像保存在SQL Server数据库中。

我将图像转换为字节并存储在SQL Server中,但现在我想将保存的字节转换为图像并使用c#在asp.net的标签上显示。

我尝试了很多,但没有找到解决方案。

这是代码(将字节转换为Image)

if (fImage.HasFile)
{
    if (fImage.PostedFile.ContentType == "image/jpg" || fImage.PostedFile.ContentType == "image/jpeg" || fImage.PostedFile.ContentType == "image/png")
    {
       int filelenght = fImage.PostedFile.ContentLength;
       byte[] imagebytes = new  byte[filelenght];
       fImage.PostedFile.InputStream.Read(imagebytes, 0, filelenght);
       SqlCommand cmd = new SqlCommand();
       cmd.CommandText = "Insert into tbImage(Img) values(@img)";
       cmd.Connection = con;
       cmd.Parameters.AddWithValue("@img", imagebytes);
       con.Open();
       cmd.ExecuteNonQuery();
       con.Close();
       Response.Write("Image saved to database");
    }
}

5 个答案:

答案 0 :(得分:4)

这样的内容会将Byte[]转换为Image

MemoryStream ms = new MemoryStream(byte);
Image i = Image.FromStream(ms);

答案 1 :(得分:0)

您需要做的就是将字节内容存储在变量中,然后将其写入文件系统:

var imgBlob = ... // Load the image binary array from the database
File.WriteAllBytes("path/to/file.jpg", imgBlob);

答案 2 :(得分:0)

您可以创建一个控制器操作来处理检索图像

    public FileResult DownloadImage(int Photo_Id)
    {

        byte[] fileBytes = "get bytes from db here";
        string fileName = "file name here"

        return File(fileBytes, "contentType of the image" , fileName);

    }

答案 3 :(得分:0)

感谢您的宝贵回复。

我用这个解决了这个问题。 看看。

int id = Convert.ToInt32(drpImage.SelectedValue);

    SqlCommand cmd = new SqlCommand("Select img from tbImage where id = " + id+"", con);
    con.Open();
    SqlDataReader dr = null;
    dr = cmd.ExecuteReader();
    if (dr.HasRows)
    {
        while (dr.Read())
        {
            byte[] img = (byte[])dr["img"];
            string base64string = Convert.ToBase64String(img, 0, img.Length);

            lblImage.Text += "<img src='data:image/png;base64," + base64string + "' alt='No Image' width='200px' vspace='5px' hspace='5px' />";
        }
    }
    con.Close();

答案 4 :(得分:0)

SqlCommand cmd = new SqlCommand("Select img from tbImage where id = " + id, con);

con.Open();

SqlDataReader reader = cmd.ExecuteReader();

if (reader.HasRows)
{
    while (reader.Read())
    {
        byte[] img = (byte[])reader["img"];

        MemoryStream ms = new MemoryStream(img);

        PictureBox1.Image = Image.FromStream(ms);
    }
}

con.Close();