我想允许用户从 SQL 下载图片,这些图片将成为他们在我网站上的背景。
我已经在各个地方使用上传的图片作为前景对象,所以我知道存储和检索工作正常,我通常 DataBind()
到asp:FormView
, 但现在我正尝试将此图像用作 <body>
中的背景,但是 <body>
需要一个 URL 字符串。
这是我的。我在这方面遇到了困难,找不到答案。
<body style="background-image:url(<%# GetBodyStyle() %>">
代码隐藏:
public object GetBodyStyle()
{
object bodyBackgroundImageUrl = BodyBackgroundImageUrl;
//Make adjustments
return bodyBackgroundImageUrl;
}
我有另一个子例程从名为 FetchImage 的数据库中获取我的图像,它返回一个数据表:
protected object BodyBackgroundImageUrl
{
get
{
DataCalls DataCall = new DataCalls();
return DataCall.FetchImage("MyBackgroundImageID");
}
最佳答案
我的建议是创建一个图像处理程序:
您可以像创建标准的“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)">
请记住,您可以配置处理程序来访问 session ,并查询字符串变量,例如:
<body style="background-image:url(BackGroundImage.ashx?id=something)">
您可以在此处找到更多信息:
关于asp.net - 如何从数据库加载背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856026/