我必须动态显示图像。我已为此编写代码,我得到了图像的名称&路径也来自数据库,即Filename&我之前存储的文件路径,但我没有得到图像(即使我存储该图像的路径也没有显示图像)。请告诉我如何在本地主机上设置图像的图像。我的代码如下:
//PlaceHolder for adding images i.e inside formview control
PlaceHolder PHFilename = (PlaceHolder)FVViewCustData.FindControl("PHFilename");
for (int i = 0; i < dsfile.Tables[0].Rows.Count; i++)
{
HyperLink hypname = new HyperLink();
hypname.Text = Convert.ToString(dsfile.Tables[0].Rows[i]["FileName"]);
PHFilename.Controls.Add(hypname);
Image img = new Image();
//IPAddress is my ipaddress
img.ImageUrl = "IPAddress" + Convert.ToString(
dsfile.Tables[0].Rows[i]["FilePath"]);
PHFilename.Controls.Add(img);
}
答案 0 :(得分:1)
如果将图像数据保存在DB中,则可以使用图像处理程序并动态加载。
但是如果你在DB中保留图像URL取决于你保存文件名或相对路径或绝对路径。
答案 1 :(得分:0)
有几种方法可以解决您的问题:
第一种方式: 将所有图像存储在某个基本目录下 - 您可以在其下有子目录。存储在数据库中的映像路径将相对于此基本目录。现在将此基本目录映射为网站中的某个虚拟目录。现在您可以使用
等代码string imageVirtualDir = "/StoredImages/";
img.ImageUrl = imageVirtualDir + Convert.ToString(
dsfile.Tables[0].Rows[i]["FilePath"]);
毋庸置疑,基目录路径和映像虚拟目录路径将是可配置的值。
第二种方式: 您可以将图像存储在任何地方。假设您从数据库中获取完整的物理路径。因此,您将设置图像URL,例如
img.ImageUrl = "/ImageServer.ashx?path=" + Convert.ToString(
dsfile.Tables[0].Rows[i]["FilePath"]);
在这里,您需要一个简单的http处理程序(ImageServer.ashx)来为您的图像提供服务 - 代码将类似于
public class ImageServer : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var path = context.Request["path"];
context.Response.ContentType = "image/jpeg";
context.Response.TransmitFile(path);
}
public bool IsReusable
{
get
{
return false;
}
}
}
请注意,这只是一个模板代码,可帮助您入门。对于生产代码,您需要进行错误处理,根据图像类型设置正确的内容类型。此外,不建议在查询字符串中使用物理图像路径 - 因此您需要传递相对路径或某些令牌 - 例如,您可以传递行ID,以便您的处理程序可以查询数据库并获取图像路径等。