想象一下,有一个web(mvc)应用程序,服务器上的主目录是默认的c:\intepub\wwwroot
。我需要的是:
d:\lolcats\
当然,这个样本非常简单。我的解决方案是:当请求/randomPicture/
时,将随机图片复制到APP_Images/current_response.jpg
或其他任何应用程序主文件夹,然后简单地渲染
<img src="../APP_Images/current_response.jpg" />
这是唯一的解决方案,还是有更文明的方法呢?
答案 0 :(得分:3)
有很多方法可以做到这一点,但最简单的是最不讨人喜欢的方法:只需为IIS中的图像位置创建一个虚拟文件夹。
答案 1 :(得分:1)
您可以按如下方式使用HTTP处理程序:
public class GetImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
DateTime now = DateTime.Now;
context.Response.Cache.SetExpires(now.AddYears(1));
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetValidUntilExpires(true);
context.Response.Cache.SetLastModified(now);
context.Response.Cache.VaryByParams["FileID"] = true;
context.Response.Cache.SetOmitVaryStar(true);
context.Response.ContentType = file.ContentType;
context.Response.AppendHeader("content-length", file.ContentLength.ToString());
//TODO: Get your file here
string contentDisposition = String.Empty;
contentDisposition += "filename=" + file.OriginalFilename;
context.Response.AppendHeader("content-disposition", contentDisposition);
string imagePath = Path.Combine(HostingEnvironment.MapPath(Settings.Default.MediaPath), file.LocalFilename);
context.Response.WriteFile(imagePath);
}
public bool IsReusable
{
get
{
return false;
}
}
}
并像这样使用它:
<img src="/Handlers/GetImage.ashx?FileID=' + thumbnailFileID + '" alt="" />