2016-06-07 112 views
0

如何获取网页上的图像控件从sqlreader显示?asp.net从sqlreader显示图像

我有一个sqlreader与二进制数据和内容类型字段,但不知道如何让它显示到我的网页上的图像控件。

找到了“GetStream”方法,但找不到我需要的语法。从SQLReader的

字段是: IMAGE1,对于二进制数据 Image1Content,对于内容类型(图像/ JPG) Image1Name,为图像名称

页上的图像的控制是 “IMAGE1”

我在后面的页面上分配其他控件,并希望对图像控件执行相同的操作。

试过,但最后得到的读者[“图像1”]错误:

while (reader.Read()) 
       Image1.ImageUrl = reader.GetStream("data:image/jpg;base64," + Convert.ToBase64String((byte[])reader.["Image1"])); 
+1

有两种方法。 1)简单和2)不简单。 1)使用base64和数据协议进行图像处理。 2)你必须放置图像的id,并使用ashx从数据库中获取图像。在阅读器中使用函数getBytes或getStream。 –

+1

可能的重复[如何使用ASP.NET显示来自SQL Server的图像?](http://stackoverflow.com/questions/11284217/how-can-i-display-an-image-from-sql-server -using-asp-net) – Spivonious

+0

@nick_n_a请看我刚添加的代码。 –

回答

1

它总是有利于做多步的东西,所以你可以看的更清楚,事情会出错。你不需要GetStream()reader["Image1"],他们完成几乎相同的事情。我将演示后者,因为我不知道Image1是什么指数:

while (reader.Read()) 
{ 
    byte[] imgBytes = (byte[])reader["Image1"]; 
    string encodedBytes = Convert.ToBase64String(imgBytes); 
    string url = string.Concat("data:image/jpg;base64,", encodedBytes); 
    Image1.ImageUrl = url; 
} 

不过,如果你有更多的一排,你将覆盖的Read()每次迭代的图像的URL。我怀疑你打算做什么,但我无法真正了解。我怀疑你只想调用Read()一次,而不是在while循环中,但是如果只有一行,你不会注意到其中的差异。

+0

Crowcoder我认为这是正确的,我需要找/正在寻找的路径,请原谅这个新手问题,,,但我不确定会发生什么在这里//设置你的图片url这里的图片数据在阅读器中是“Image1”(还有图片2-4)和一个名为image1的图片控件,我为图片控件设置了url之前,但没有提到这样的代码隐藏项目,你是正确的,我不需要循环,这是用来显示细节为单个数据库记录。 –

+0

@BrentOliver,请参阅编辑。我不认为我已经使用过网络表单,因为在我知道数据网址是什么之前,但是尝试设置'ImageUrl'。 – Crowcoder

+0

这工作,谢谢,现在能够看到所有四个图像。 –