【问题标题】:Trouble loading images not in application folder Images无法加载不在应用程序文件夹中的图像
【发布时间】:2012-09-13 22:37:28
【问题描述】:

我在显示不在应用程序文件夹中而是在 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"/>


}

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

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

    这不起作用有三个原因:

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

    src absolute path problem 也涵盖了这一点

    【讨论】:

    • 如果你有 &lt;img src="c:\tmp\myimage.jpg" /&gt; 这样的东西,那就错了,因为浏览器不知道如何使用它不理解的协议来处理 url
    • 啊,好吧,我猜我需要创建一个路线或某种映射,对吧?
    • 是的,但在这种情况下,当您将应用程序部署到生产服务器时,您可能会遇到我最初描述的问题。我还将修改我的答案以澄清问题。
    • @Siemsen,查看这篇文章,了解如何从 Action 方法获取图像:stackoverflow.com/questions/5953045/…
    • 最简单的方法是将文件复制到 Web 应用程序的子目录中。此外,您必须将每个文件路径从 c:\bla\myapp\images\x.jpg 转换为 ~/images/x.jpg
    猜你喜欢
    • 2023-03-17
    • 2014-12-18
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2021-11-27
    • 2018-11-20
    相关资源
    最近更新 更多