将图像从SQL Server数据库(图像字段)绑定到Ad Rotator

时间:2015-11-11 14:55:07

标签: c# asp.net adrotator

我搜索了stackoverflow的答案,但找不到任何可以帮助我的东西。

我正在尝试使用Ad Rotator来显示存储在数据库中的图像。不同产品将有5种不同的广告。产品存储在cookie中,每个订单后都会有所不同。我知道我必须从数据库中检索二进制文件并将其转换为图像。这就是我尝试过的(现在只测试一种产品。然后我可以使用foreach循环或其他东西,想先得到正确的想法):

using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strconn))
    {
        SqlCommand cmdSelect = new SqlCommand("select Image from Products where ProductID = '1'", con); 
        con.Open();
        byte[] barrImg = (byte[])cmdSelect.ExecuteScalar();
        string strfn = Convert.ToString(DateTime.Now.ToFileTime());
        FileStream fs = new FileStream(strfn,
        FileMode.CreateNew, FileAccess.Write);
        fs.Write(barrImg, 0, barrImg.Length);
        fs.Flush();
        fs.Close();
        Image IMG = Image.FromFile(strfn);
    }

但是这段代码不起作用。我收到一条错误消息

Error   1   'System.Web.UI.WebControls.Image' does not contain a definition for 'FromFile'  

所以我有两个问题: 1.这样做的正确方法是什么? 2.如何为Ad Rotator的XML文件中的ImageUrl字段分配正确的值?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可以尝试这种方式,使用较少的代码行,使用MemoryStream而不是File:

using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strconn))
 {
        SqlCommand cmdSelect = new SqlCommand("select Image from Products where ProductID = '1'", con); 
        con.Open();
        byte[] barrImg = (byte[])cmdSelect.ExecuteScalar();
        MemoryStream ms = new MemoryStream(barrImg);
        Image IMG = Image.FromStream(strfn);
  }