我正在尝试将图像保存在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");
}
}
答案 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();