从剃刀视图中的hdd渲染图像

时间:2015-05-16 20:35:56

标签: c# .net asp.net-mvc

我有很多文件夹,其中每个图像都存储在我的localdisk上。 该路径在web.config中引用,因此有一天当我将项目移到联机时,我可以轻松地更改此文件夹路径。

<add key="MyImagesFolder" value="E:\MyImages\" />

我在剃刀视图中加载此值并与图像属性一起使用img src显示图像

@{
   string imagesFolder = ConfigurationSettings.AppSettings["MyImagesFolder"].ToString();
   foreach (var item in @Model.Images) {
      <img src="@imagesFolder/@item.FilePath" alt="@item.Description" />
   }
}

在调试中捕获的图像src值是

E:\\MyImages\\100/1.jpg

其中100表示​​MyImages文件夹下的文件夹。

图像根本无法渲染。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您正在使用指向服务器文件系统上图像路径的src属性呈现html img标记。您的src属性必须包含Web应用程序中的URL,这些URL将提供通过HTTP协议访问HTTP客户端(Web浏览器)的图像。

src attribs需要看起来像:

http://yourwebserver/yourapp/images/1.jpg

或相对网址:

./yourapp/images/1.jpg

问题是网页浏览器无法直接抓取您的网络服务器文件系统

一种可能的解决方案是将您的images文件夹放入MVC项目中,并将相对URL呈现给img标签的src属性。

如果您只需要在与Web服务器相同的计算机上运行Web客户端,那么渲染src属性的方式也是有效的,但在Web服务器外部运行的客户端不会看到图像。 如果您要经历此路径,则仍需要将这些src属性呈现为具有文件架构的URL,即

file:///c:/images/1.jpg

请参阅http://en.wikipedia.org/wiki/File_URI_scheme