【问题标题】:rendering image from hdd inside razor view在剃刀视图中从硬盘渲染图像
【发布时间】:2015-05-17 05:36:00
【问题描述】:

我有一堆文件夹,其中每个文件夹都存储在我的本地磁盘上。 该路径在 web.config 中被引用,因此有一天在线移动项目时,我可以轻松更改此文件夹路径。

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

我将这个值加载到 razor 视图中,并与图像属性一起使用 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 文件夹下的文件夹。

图像根本不渲染。

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    您正在渲染带有 src 属性的 html img 标签,这些属性指向服务器文件系统上图像的路径。您的 src 属性必须包含来自您的 Web 应用程序的 URL,这将提供一种通过 HTTP 协议访问 HTTP 客户端(Web 浏览器)的图像的方法。

    src 属性需要类似于:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多