如何在localhost上显示在asp.net 3.5 c#中动态创建的图像

时间:2011-08-11 06:22:58

标签: c# asp.net

我必须动态显示图像。我已为此编写代码,我得到了图像的名称&路径也来自数据库,即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);
}

2 个答案:

答案 0 :(得分:1)

如果将图像数据保存在DB中,则可以使用图像处理程序并动态加载。

但是如果你在DB中保留图像URL取决于你保存文件名或相对路径或绝对路径。

C# Save and Load Image from Database

答案 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,以便您的处理程序可以查询数据库并获取图像路径等。