我搜索了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字段分配正确的值?
提前感谢您的帮助!
答案 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);
}