从ASP.NET应用程序外部显示图像

时间:2011-01-13 20:04:49

标签: c# asp.net image

所以我在显示项目文件夹外部的图像时遇到了一些麻烦......

我似乎只能访问“〜”目录和子目录中的图像......

说,如果我想从“E:/ XYZ / 11-01-01新年/”或类似的东西访问图像我该怎么办?

注意:我将所有文件夹和子文件夹的权限设置为“Everyone”可读,因此IIS / Visual Studio应该能够但不显示图像控件中的图像

2 个答案:

答案 0 :(得分:5)

您应该使用HttpHandler来显示图片。

Google搜索“httphandler图片”会有很多关于如何执行此操作的示例。

不是尝试直接链接到您的图像,而是使用查询字符串链接到处理程序,以确定要显示的图像。例如

http://mysite.com/MyHandler.ashx?image=myimage.jpg

这是一个非常基本的样本(减去错误处理等)

using System.IO;
using System.Web;
public class MyImageHandler : IHttpHandler 
{
    public void ProcessRequest(System.Web.HttpContext ctx) 
    {

        string _Path;

        _Path = "E:\\XYZ\\11-01-01 New Year\\" + context.Request.QueryString["image"];

        ctx.Response.StatusCode = 200;
        ctx.Response.ContentType = "image/jpeg";
        ctx.Response.WriteFile(_Path);      
    }

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

答案 1 :(得分:2)

除非您将虚拟目录映射到图像,否则客户端浏览器永远不会知道这些图像的位置。在本地测试环境中,您可以通过将图像引用为“file:///E:/XYZ/11-01-01 New Year/myimage.jpg”来解决此问题,但这是非常糟糕的做法,并且永远不会在生产环境中工作。您应该始终在应用程序的工作目录中使用相对路径,或者在其他位置使用静态定义的虚拟目录。