我有一个SQL Server数据库。我在那里存储了一个varbinary(max)的图像。我按以下方式插入图像:
string consString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
SqlConnection con = new SqlConnection(consString);
con.Open();
String filePath = fuImage.PostedFile.FileName;
String naam = Path.GetFileName(filePath);
String extension = Path.GetExtension(naam);
Stream stream = fuImage.PostedFile.InputStream;
BinaryReader br = new BinaryReader(stream);
Byte[] imgByte = br.ReadBytes((Int32)stream.Length);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spAddImage";
cmd.Parameters.AddWithValue("@FOTO", imgByte);
cmd.Parameters.AddWithValue("@ARTIEST", ddlArtiest.SelectedValue);
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
现在,图像在数据库中显示如下: 它存储为varbinary。
http://puu.sh/ikF83/6a03b52520.png< --- database
现在我想在我插入的asp.net页面上显示我的图像。
但我不知道如何才能做到这一点。
答案 0 :(得分:0)
您可以使用SqlDataReader
来检查结果并获取所需内容
var reader = cmd.ExecuteReader();
while (reader.Read())
{
byte[] myImage = (byte[])reader["MyImageColumn"];
}
这是我的头脑,所以根据需要进行调整。但它应该给你基本的想法。
此外,强烈建议使用using
块,因为它可以确保正确放置对象。
因此您可以将代码更改为
using(var connection = new SqlConnection(connectionString))
{
//Your command
connection.Open();
//Datareader here
}//Object disposed here
答案 1 :(得分:0)
扩展Izzy提供的答案,下面是我们如何实现相同的。
public HttpResponseMessage RenderImage(RenderRequest renderRequest, HttpRequestMessage request)
{
var httpResponse = new HttpResponseMessage();
try
{
var reader = cmd.ExecuteReader();
while (reader.Read())
{
byte[] imagebytes = (byte[])reader["MyImageColumn"];
}
return httpResponse = request.CreateResponse<byte[]>(HttpStatusCode.OK, imagebytes, new ImageMediaFormatter("image/png"));
}
catch ()
{
throw;
}
}