【问题标题】:Get image path from webapi run on localhost从在 localhost 上运行的 webapi 获取图像路径
【发布时间】:2012-12-06 00:40:09
【问题描述】:

我将图像存储在项目 Web API 的文件夹 App_Data 中。我用路径存储在数据库中:

 var path = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/"), user.Username + ext);

从项目 MVC 客户端我调用 Web Api,从路径图像我无法显示标签 <img />。 Chrome 显示错误:不允许加载本地资源。

<img id="img_id"  width="70px" heigh="70px" src="D:\Nguyen Nhu\Lap Trinh Hien Dai\ServerAPI\ServerAPI\App_Data\nophoto.gif"/>

如何解决?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    一般来说,您应该使用Url.Content 而不是Server.MapPath 在 MVC 中映射服务的客户端 URL。 Server.MapPath 返回物理文件夹,只能由服务器端代码使用。

    但是,App_Data 是一个特殊的文件夹,IIS 将文件存储在 won't be served 中。

    TL;DR:您需要使用另一个文件夹来存储您的图像,例如

    Url.Content('~/MyImagesFolder/' + user.Username + ext);

    【讨论】:

    • 我不能调用 Url.Content 方法不存在。
    • 猜测,您是在远离 MVC 的数据层中创建 Url,因此会出现错误。我可以建议您仅将文件名(例如user.UserName + ext)存储在数据库中,然后在渲染页面时使用Url.Content 创建提供的图像url。这将有几个好处,特别是文件存储位置的可移植性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多