如何从数据库加载背景图像?

时间:2013-12-31 10:43:11

标签: asp.net css database background-image

我想允许用户从我的网站上下载将成为他们背景的SQL图片。

我已经将上传的图片用作各个地方的前景对象,所以我知道存储和检索工作正常,我通常会DataBind()asp:FormView,但现在我正在尝试将此图片用作<body>中的背景,但<body>需要一个网址字符串。

这就是我所拥有的。我正忙着这个,但找不到答案。

<body style="background-image:url(<%# GetBodyStyle() %>">

代码隐藏:

public object GetBodyStyle()
{
  object bodyBackgroundImageUrl = BodyBackgroundImageUrl;

  //Make adjustments
  return bodyBackgroundImageUrl;
}

我有另一个子程序从DB中获取我的图像,名为FetchImage,它返回一个数据表:

protected object BodyBackgroundImageUrl
{
  get
  {
    DataCalls DataCall = new DataCalls();
    return DataCall.FetchImage("MyBackgroundImageID");
  }

3 个答案:

答案 0 :(得分:0)

我建议创建一个图像处理程序:

您可以像标准的“ashx”文件一样创建它

<%@ WebHandler Language="C#" Class="getImage" %>
 using System;
 using System.Web;

 public class BackGroundImageHandler : IHttpHandler {

     public void ProcessRequest (HttpContext context) {
         //return content from dabase and render image
        // probably using context.Response.BinaryWrite
     }

     public bool IsReusable {
         get  {
             return false;
         }
    }
 }

如果你想拥有自己的扩展,你可以生成一个dll并在web.config中配置它,如:

<configuration>
   <system.web>
     ...
     <httpHandlers>
      <add verb="*" path="backimage.img" type="Sample.BackGroundImageHandler, Sample" />
     </httpHandlers>

使用问题和ASHX解决方案中的代码:

<body style="background-image:url(BackGroundImage.ashx)">

请记住,您可以配置处理程序以访问会话,并查询字符串变量,如:

<body style="background-image:url(BackGroundImage.ashx?id=something)">

您可以在此处找到更多信息:

read image from folder and database

答案 1 :(得分:0)

我设法在一些读者的帮助下,并在this page的帮助下解决了这个问题。

真正的问题是我无法访问数据库并使用它在<body>标记中返回的变量。我已经在其他地方使用了图像处理程序,但这不适用于<body>标记。所以这就是我所做的:

我写了一个存储过程来获取图像的ID。

然后我将<body>标记更改为:

<body id="MasterPageBodyTag" runat="server">

在代码隐藏(C#)中我添加了这个:

  public HtmlGenericControl BodyTag
  {
    get
    {
      return MasterPageBodyTag;
    }
    set
    {
      MasterPageBodyTag = value;
    }
  }

在Page_Load事件中,我把它放在:

BackgroundImageID = DataCall.FetchImageIDByName(MySchoolName, "MasterBackground");
BodyTag.Attributes.Add("style", "background-image:" + "url(Handler.ashx?puid=" + BackgroundImageID.ToString() + ");");

注意:FetchImageIDByName返回存储过程中的ID。 有一个名为Handler.ashx的图像处理程序。

现在它有效。我要感谢所有给我一些宝贵时间的人。它永远不够。祝你好运。

答案 2 :(得分:-1)

 Try below link you might get your answer

Try this