来自虚拟路径的ASP.NET MVC图像

时间:2010-11-11 01:40:49

标签: c# asp.net-mvc image

我有一个应用程序需要获取不属于应用程序的图像。但存储在文件系统中。我被告知最好的办法是使用虚拟目录,而不是让它们像文件系统那样直接离开

 public FilestreamResult GetPicture(string Filename) { 
    Filename = @"C:\SomePath\" + Filename;
        return new FileStreamResult(new FileStream(Filename, FileMode.Open, FileAccess.Read, FileShare.Read), "image/jpeg"));
}

是否可以使用虚拟目录而不是使用文件路径? 接下来的问题是如何创建此虚拟目录以及如何从虚拟目录中获取映像?

谢谢!

3 个答案:

答案 0 :(得分:1)

使用Server.MapPath("~/someimage.jpg")

请参阅:http://msdn.microsoft.com/en-us/library/ms524632(VS.90).aspx

答案 1 :(得分:1)

我不确定您的虚拟目录是什么意思。但我不认为直接从文件系统中提取文件总是一个坏主意。这很简单,您不必担心目录结构(有时候很难“模拟”)。

由于您提到了asp.net,我建议您不要硬编码存储的根目录,而是将其提取到web.config文件。

答案 2 :(得分:1)

使用帖子中的方法有很多开销(所有图像都通过.net应用程序堆栈)。如果您计划保护对图像的访问权限或需要一些其他应用程序级别控制,那么这是可以接受的,但如果这些是标准资产文件,那么您将需要使用虚拟目录。

通过右键单击网站并选择新的虚拟目录,可以在IIS中配置虚拟目录。您将为此目录指定一个名称,例如“content”,然后将其指向您的图片位置(c:\ somepath)。然后,您将通过http://yourwebsite.com/content/filename.jpg访问该目录,它将显示为您网站的一部分。