首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET在SQL中存储图像并为Asp:Image检索

ASP.NET在SQL中存储图像并为Asp:Image检索
EN

Stack Overflow用户
提问于 2009-03-30 20:39:32
回答 7查看 13.1K关注 0票数 3

我希望文件上传一个图片jpeg,gif等到一个更新配置文件页面上的SQL数据库等。然后在配置文件页面上,我希望从sql数据库中检索图像,并将其显示在Asp:Image控件中。我有很多代码试图做到这一点,但它不能工作。该表包含类型为Image的列。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-30 21:12:44

正如乔尔提到的,您应该使用HttpHandler或页面来显示图像。以下是输出图像(Image.ashx)的示例代码:

代码语言:javascript
运行
复制
// ProcessRequest method of Image.ashx
long imageId = Convert.ToInt64(Request.QueryString["ImageId"]);

using (var conn = new SqlConnection(connectionString))
using (var command = new SqlCommand(
    "SELECT ImageFile FROM ImageTable WHERE ImageId = @ImageID", conn))
{
    command.Parameters.Add("@ImageID", SqlDbType.Int).Value = imageId;
    conn.Open();

    Response.ContentType = "image/gif";
    Response.BinaryWrite((byte[]) command.ExecuteScalar());
}

然后在页面中使用图像,如下所示:

代码语言:javascript
运行
复制
  <asp:Image id="Image1" runat="server" ImageUrl="Image.ashx?ImageID=12"/>
票数 8
EN

Stack Overflow用户

发布于 2009-03-30 20:49:25

这里要记住的重要一点是,你不应该尝试将图像数据与个人资料页面本身一起传输。相反,您希望您的配置文件页面为浏览器生成HTML标记,如下所示:

代码语言:javascript
运行
复制
<img src="~/MyImageHandler.ashx?UserID=1234" alt="User 1234 avatar" width="100px" height="150px" />

这就是<asp:Image .../>控件的最终结果。则浏览器将发送一个完全独立的Http请求来检索该图像。这就是网站上图片的工作原理。然后,您需要能够处理这个额外的请求。为此,创建一个Http handler (*.ashx file)并使用它从数据库中检索适当的图像数据,并将其发送到浏览器。

票数 2
EN

Stack Overflow用户

发布于 2009-03-30 21:47:23

如果您使用的是SQL2005或更高版本,则不应该使用数据类型Image,因为它现在是deprecated。相反,如果可能,您希望使用新的Varbinary(MAX)类型。一旦你存储了它,你需要做的就是通过ADO.Net调用检索它,并将单元格值转换为Byte[]类型,然后调用Response.BinaryWrite,就像上面ScarletGarden的例子一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/698912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档