Asp.net mvc 如何将图像存储到网络中的文件夹并在视图中引用它们-asp.net mvc

Asp.net mvc 如何将图像存储到网络中的文件夹并在视图中引用它们-asp.net mvc,asp.net-mvc,image,knockout.js,Asp.net Mvc,Image,Knockout.js,我的应用程序(asp.net mvc knockout)有一个功能,管理员用户可以上载.png或.jpg文件并将其绑定到实体。目前,我的应用程序中的所有图像都存储在根应用程序文件夹中的“\images\Icons”下。但由于不允许将图像保存到Web服务器中的文件夹中,因此必须将其移动到网络中的共享文件夹“\XYZ.net\shared\AppName\images\Icons”。现在,当实体详细信息与图像一起显示在视图上时,图像不会显示。Fiddler显示400错误请求错误,URL-GEThtt

我的应用程序(asp.net mvc knockout)有一个功能,管理员用户可以上载.png或.jpg文件并将其绑定到实体。目前,我的应用程序中的所有图像都存储在根应用程序文件夹中的“\images\Icons”下。但由于不允许将图像保存到Web服务器中的文件夹中,因此必须将其移动到网络中的共享文件夹“\XYZ.net\shared\AppName\images\Icons”。现在,当实体详细信息与图像一起显示在视图上时,图像不会显示。Fiddler显示400错误请求错误,URL-GET
http://localhost:52624/ApplicationName/%5CXYZ.net%5CShared%5CAppName%5CImages%5CIcons%5CAbc.png HTTP/1.1

解决这个问题有什么建议吗


旧代码:在Layout.cshtml中

<script type="text/javascript"> var BASE_URL = '@Url.Content("~/")';</script>
In View:
<!-- ko if: Icon() -->
   <img data-bind="attr: {src : BASE_URL + 'Images/Icons/' + Icon()}" />
<!-- /ko -->
var BASE_URL='@URL.Content(“~/”);
鉴于:
新代码:

var IMG_URL = '\\XYZ.net\\Shared\\AppName\\';
<!-- ko if: Icon() -->
    <img data-bind="attr: {src : IMG_URL + 'Images\\Icons\\' + Icon()}" />
<!-- /ko -->
var IMG_URL='\\XYZ.net\\Shared\\AppName\\';

您有两种选择:

  • 在IIS上添加虚拟目录以指向网络驱动器
  • 在服务器上,拦截对特定路由(例如)的调用。处理请求并使用Response将文件推送到客户端

这不是可以在客户端上完成的操作。

我要补充Adam Zuckerman的回答,您在访问localhost上的文件时可能会遇到问题。您可能需要使localhost成为一个受信任的站点。

谢谢您,Adam。我正在看由发布的博客。这看起来像一个老博客,如果你知道任何新的在线示例,你能告诉我它们吗。另外,第二种方法的实施是否会拦截特定路线的呼叫并编写响应,从而导致用户体验不佳,如页面加载变慢等…Eric,web基础设施团队拒绝让localhost成为受信任的站点,原因他们最清楚。谢谢你的帮助。