从SQL Server检索图像以在ASP.NET应用程序中显示它

时间:2009-05-15 09:36:25

标签: c# asp.net silverlight-2.0

我想从SQL Server检索图像以在ASP.NET应用程序中显示它。我认为我可以将从SQL Server检索到的图像写到服务器的文件夹中并显示它抛出其路径。还有其他更好的方法吗?

音频和视频文件存在同样的问题(我可以使用silverlight播放这些音频和视频文件吗?)

我担心的是我不想将这些文件(图像,音频和视频)存储在服务器上以显示它。

5 个答案:

答案 0 :(得分:3)

您可以编写一个自定义HTTP处理程序,该处理程序将获取您尝试在查询字符串参数上显示的项目的ID。

然后,此处理程序将从SQL Server检索数据,并像下载文件一样返回它。这个post有步骤。

我不确定“文件”中Silverlight流的功能,您可能需要使用Silverlight Streaming Service

答案 1 :(得分:0)

有更好的方法吗?恕我直言,是的。将图像文件存储为文件。这就是文件系统的用途,而且你不会参与数据库的捏造。

过去,我使用MySQL来存储图像并使用PHP检索它们,但从维护的角度来看,这个解决方案真的很快就变老了。它归结为这样一个事实,即你总是必须以某种方式存储数据,最有效的方法也是最简单的。

如果必须将其存储在数据库中,我将使用通用访问者页面(例如myImage.aspx)查询数据库并将返回的blob直接流式传输到浏览器。那么你的img标签可能需要看起来像

<img src="/img/myImage.aspx?imgId=123456" <other tag data> />

答案 2 :(得分:0)

如果您使用SQL Server 2008,那么我相信您可以将这些对象存储为FILESTREAM,然后您可以检索文件系统上文件的路径。您应该能够安排通过IIS映射该路径,因此将其转换为URL应该是切实可行的。

答案 3 :(得分:0)

您的图片来源可以是

<img src="blah.aspx?id=123" />

在blah.aspx中,从数据库中检索图像数据,并使用Response.BinaryWrite发送到浏览器,并设置适当的内容类型。

答案 4 :(得分:0)

全部,我想这个解决方案存在于以下链接中:

http://www.codeproject.com/KB/aspnet/asp_net_and_mysql.aspx

http://www.codeproject.com/KB/aspnet/image_asp.aspx

这个解决方案适用于mysql数据库,也可以适当修改以适用于mssql数据库。