4

这是我的课程(product.cs),其中插入图像的方法是:

public static void InsertProductIMG(byte[] image, string contentType) 
{
   string cs = "Data Source=(local);Initial Catalog=myApp;Integrated Security=True";
   string comandoSql = "INSERT INTO [myApp].[dbo].[product] (image, ContentType) VALUES (@image, @contentType)";

   using (SqlConnection conn = new SqlConnection(cs))
   {
       conn.Open();

       using (SqlTransaction trans = conn.BeginTransaction())
       {
           SqlCommand cmd = new SqlCommand(comandoSql, conn, trans);
           SqlParameter[] parms = new SqlParameter[2];
           parms[0] = new SqlParameter("@image", image);
           parms[1] = new SqlParameter("@contentType", contentType);
           foreach (SqlParameter p in parms)
           {
              cmd.Parameters.Add(p);
           }

           cmd.ExecuteNonQuery();
           trans.Commit();
       }
    }
}

这是我调用上述方法的 apsx 页面背后的代码:

byte[] imageBytes = new byte[fupld.PostedFile.InputStream.Length];
product.InsertProductIMG(imageBytes, "image/jpeg");//product is the class where the method is

现在我想知道如何显示此图像?

我是否必须从 sql (SELECT) 中读取 byte[],转换为字符串,然后再转换为 byte[]?然后将其转换为位图(System.Drawing)。但是我如何在 aspx 页面中显示这个位图呢?

我不知道该怎么做。请帮忙!!:]

谢谢

观察:在 SQL Server 中,列image的类型为varbinary(MAX).

4

2 回答 2

5

创建一个返回图像的网页。您将从数据库中选择字节(因为您已经编写了要插入的代码,我想您知道如何选择)。获得字节后,您需要设置 mime 类型并将字节写入响应流。

var bytesFromDatabase = getImageFromDatabase();
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(bytesFromDatabase);

编辑:

只需在前面提到的 aspx 网页上使用带有源代码的 img 标签。例如:

<img src="http://www.example.com/image.aspx?id=1" alt="image" />
于 2012-07-01T17:45:04.027 回答
4

您需要使用处理程序来执行此操作

读这个,一个很好的例子

http://www.dotnetcurry.com/ShowArticle.aspx?ID=129

于 2012-07-01T17:49:30.367 回答