0

相当直截了当的问题,我将图像作为 varbinary 存储在我的数据库中,并希望提供这些图像的链接,而不是在网站上显示它们。当用户单击链接时,他/她应该能够下载图像。

4

3 回答 3

3

响应请求提供图像。

<img src="?" /> <!-- what goes here? -->

您需要创建一个HTTP 处理程序来接收对这些图像的请求。

处理程序是在特定 URL 上可用的可执行文件,它可以响应您的请求;在这种情况下,通过提供图像的二进制数据。ASPX 页面是一个有效的处理程序,尽管有更有效的图像处理程序类型。

<img src="MyHandler.aspx?imageId=123" />

处理程序应该做一些事情:

  • 验证 ID 是否有效以及调用者是否具有权限(如果需要)
  • 从数据库中检索图像
  • 设置适当的响应头
  • 用于Response.BinaryWrite()将二进制数据发送到客户端。

请注意,如果您使用的是 ASP.Net MVC,则可以使用控制器作为处理程序。

另一种方法是对字节进行 base 64 编码并将它们直接嵌入到图像标签中。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">

对于小图像或多个请求的开销非常高时,这是一种有用的技术。

见:http ://en.wikipedia.org/wiki/Data_URI_scheme

更多阅读:

于 2012-10-27T21:37:42.377 回答
0

您应该创建一个获取图像 ID 并返回图像的页面。

于 2012-10-27T21:31:34.060 回答
0

你可以考虑这个问题:

在 asp 中显示数据表中的图像:代码隐藏中的图像

我有一个类似的问题,那个答案解决了我的问题。除此之外,您可以使用 Telerik 的 binaryimage 组件:

http://www.telerik.com/products/aspnet-ajax/binaryimage.aspx

于 2012-10-27T21:56:30.563 回答