从本地驱动器加载图像控件

时间:2010-03-17 03:02:07

标签: c# asp.net image

我有一个文件夹C:\ Images,它有一些图片。这个文件夹不在我的项目中,我想知道是否有办法将该文件夹中的图像加载到ASP.NET Image控件。

<asp:Image ID="img" runat="server" />

一种解决方案可能是将Images文件夹设为IIS上的虚拟目录,但我想知道是否可以在不创建Images文件夹的虚拟目录的情况下完成此操作。

2 个答案:

答案 0 :(得分:4)

假设对Images文件夹授予了适当的访问权限,您可以执行以下操作:

您的主页:

protected void Page_Load(object sender, EventArgs e)
{
    mainImage.ImageUrl = "ImageHandler.ashx?image=MyImage.jpg";
}

ImageHandler:

public void ProcessRequest(HttpContext context)
{
    byte[] imageBytes = File.ReadAllBytes(@"C:\Images" + context.Request["image"]);
    context.Response.ContentType = "image/jpeg";
    context.Response.BinaryWrite(imageBytes);
}

答案 1 :(得分:1)

在一天结束时,图像需要位于用户浏览器可以看到的位置。

这意味着您的选择是:

  • 将图像移至网络服务器上的目录
  • 将图像的目录设置为虚拟目录
  • 将运行时的图像复制到Web服务器上的目录

最佳实践答案是,如果图像是网站的一部分,则将图像放入项目中;如果目录是用户上传图像的存储,则映射虚拟目录。