无法在应用程序文件夹中加载图像

时间:2012-09-21 13:35:15

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

我在显示不在应用程序文件夹中但不在C:\ tmp \ Somename \ somepic.jpg中的图像时遇到问题 我一直在寻找和尝试,但无济于事。

到目前为止(我认为与此问题相关)我是: 在控制器

public ActionResult Edit(int? id)
{
    if (id.HasValue)
    {
        var model = GetItems(id.Value);

        ViewBag.Images = Directory.GetFiles(WebConfigurationManager.AppSettings["itemPath"] + model.ContentId.ToString().Substring(0, 3) + "\\", model.ContentId + "*.jpg");
        return View(model);
    }

    return View("Notfound", "Home");
}

并在视图中

<div class="row">
@foreach (var item in ViewBag.Images)
{
    <img src="@Url.Content(item)" alt="hello"/>


}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题似乎是由于在URL中使用绝对文件路径引起的,例如

<img src="c:\tmp\myimage.jpg" />

这项工作有三个原因:

  • URI使用斜杠,而不是反斜杠
  • 浏览器一般不知道如何使用它不理解的协议来处理网址(尽管为方便起见,它们确实支持在浏览器中显示本地文件)
  • 当用户打开此类网页时,浏览器将导航到本地计算机上的文件,而不是Web服务器上的文件。浏览器禁止这样做,因为它是一个巨大的安全漏洞。

src absolute path problem

也涵盖了这一点