显示图片
问题描述:
所以我有一些麻烦,从项目文件夹外显示图片...显示图片
我似乎只能以“〜”目录中访问图像和子目录...
说,如果我想从“E:/ XYZ/11-01-01新年/”或类似的东西访问图像,我该怎么做?
注:我设置的所有文件夹和子文件夹为可读权限为“所有人”,所以IIS/Visual Studio中应该可以,但没有显示
答
您应该使用在图像控制图像HttpHandler来显示图像。
谷歌搜索“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; } }
}
答
客户端浏览器将永远不知道这些图片是,除非你映射一个虚拟目录的图像。在您的本地测试环境中,您可以通过将该映像称为“file:///E:/XYZ/11-01-01 New Year/myimage.jpg
”来解决此问题,但这是非常糟糕的做法,并且在生产环境中将无法工作。您应该始终在应用程序的工作目录中使用相对路径,或者在其他位置使用静态定义的虚拟目录。
你试过了哪些代码?你得到了哪些错误/异常? – 2011-01-13 20:06:20
最简单的方法是在IIS中设置一个虚拟目录,但通常这意味着URL可以在没有任何验证检查的情况下公开访问。如果您想要根据登录状态/角色控制对文件的访问,或者想要执行自定义日志记录,那么您需要使用IHTTPHandler路径。 – 2011-01-13 22:48:19
@pauli:没有错误,因为图像控件不会抛出错误...他们只是保持空白。 – 2011-01-15 06:56:35