【问题标题】:Image Save and Retrieve in SQL Server in asp.net using c#使用 c# 在 asp.net 中的 SQL Server 中保存和检索图像
【发布时间】:2014-03-19 18:04:30
【问题描述】:

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

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

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

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

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");
    }
}

【问题讨论】:

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


    【解决方案1】:

    这样的东西会将Byte[] 转换为Image

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

    【讨论】:

      【解决方案2】:
      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();
      

      【讨论】:

      • 你能补充一些解释,所以它不仅仅是一堵代码墙吗?
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

            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);
        
            }
        

        【讨论】:

          【解决方案5】:

          感谢您的宝贵回复。

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

          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();
          

          【讨论】:

            猜你喜欢
            • 2013-04-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-16
            • 2011-01-05
            • 2014-08-13
            • 2014-10-13
            相关资源
            最近更新 更多