0

我已经在 stackoverflow 上搜索了答案,但找不到任何对我有帮助的东西。

我正在尝试获取一个将显示存储在数据库中的图像的广告旋转器。不同的产品会有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 字段分配正确的值?

预先感谢您的任何帮助!

4

1 回答 1

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);
  }
于 2015-11-11T18:02:06.613 回答