Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css ASP.NET MVC网站,如何为div生成后台img,但img位于远程驱动器上_Css_Asp.net Mvc_Background Image_Mounted Volumes - Fatal编程技术网

Css ASP.NET MVC网站,如何为div生成后台img,但img位于远程驱动器上

Css ASP.NET MVC网站,如何为div生成后台img,但img位于远程驱动器上,css,asp.net-mvc,background-image,mounted-volumes,Css,Asp.net Mvc,Background Image,Mounted Volumes,观点: <div class="project" style="background-image: url('@project.ProjectLogoPath')"> 我已经试过了: c.ProjectLogoPath = "M:/Storage/" + p.co_name + "/Clients/" + p.cl_name + "/" + p.p_num + "_" + p.p_name + "/99_Other/project_logo.png"; 我还尝试用“\”替换所有“

观点:

<div class="project" style="background-image: url('@project.ProjectLogoPath')">
我已经试过了:

c.ProjectLogoPath = "M:/Storage/" + p.co_name + "/Clients/" + p.cl_name + "/" + p.p_num + "_" + p.p_name + "/99_Other/project_logo.png";
我还尝试用“\”替换所有“/”。还尝试使用“file://///“一开始,这似乎只是偶尔起作用(例如,刷新页面时不起作用,但按下“主页”按钮时起作用)


基本上,只要想象一下,您的网站的标准内容文件夹非常大,不再适合将其存储在web服务器上,而是存储在另一个数据服务器上。这就是我试图解决的问题。

根据定义,如果您存储图像的服务器不是web服务器,那么浏览您网站的人将无法访问它们,这确实是正确的,因为您不希望web上的所有内容都可用,只希望web服务器提供您想要的内容

因此,解决方案是:

1.)在“数据/图像”服务器上安装web服务器,但确保它仅为图像服务

2.)在实际的web服务器上创建一个操作,可能是GetImage(字符串名称),然后它会返回一个文件(“M:/Storage/”+name),然后在图像源中使用此url


这显然是简化了,但希望给你的想法?无法将图像源设置为本地路径,因为请求图像的是浏览器而不是服务器。因此,您需要使用选项1启用浏览器获取图像,或使用选项2将图像“传递”到web。有意义吗?

根据定义,如果您存储图像的服务器不是web服务器,那么浏览您网站的人将无法访问它们,这确实是正确的,因为您不希望web上的所有内容都可用,只希望web服务器提供您想要的内容

因此,解决方案是:

1.)在“数据/图像”服务器上安装web服务器,但确保它仅为图像服务

2.)在实际的web服务器上创建一个操作,可能是GetImage(字符串名称),然后它会返回一个文件(“M:/Storage/”+name),然后在图像源中使用此url


这显然是简化了,但希望给你的想法?无法将图像源设置为本地路径,因为请求图像的是浏览器而不是服务器。因此,您需要使用选项1启用浏览器获取图像,或使用选项2将图像“传递”到web。有意义吗?

您可以创建一个返回图像的操作方法。你可以打电话给我

[OutputCache(Duration = 600)]
public ActionResult GetImg(string companyName,string clientName,
                            string projectName,string projectNumber)
{
    var networkPath = @"M:/Storage/";
    var fileName = Path.Combine(networkPath, companyName);
    //Fix here as needed. I just glanced at your path :(
    fileName = Path.Combine(fileName, "/Clients");
    fileName = Path.Combine(fileName, clientName);
    fileName = Path.Combine(fileName, projectNumber+"_"+projectName);
    fileName = Path.Combine(fileName, "/99_Other/project_logo.png");
    return File(fileName, "image/png");
}
现在从您的视图中,通过传递参数值来调用此方法

<div class="project" style="background-image: url('@Url.Action("GetImg",
      new { companyName=project.CompanyName,clientName=project.ClientName,
      projectNumber = project.ProjectNumber,projectName=project.ProjectName})')"></div>

您可以创建一个返回图像的操作方法。你可以打电话给我

[OutputCache(Duration = 600)]
public ActionResult GetImg(string companyName,string clientName,
                            string projectName,string projectNumber)
{
    var networkPath = @"M:/Storage/";
    var fileName = Path.Combine(networkPath, companyName);
    //Fix here as needed. I just glanced at your path :(
    fileName = Path.Combine(fileName, "/Clients");
    fileName = Path.Combine(fileName, clientName);
    fileName = Path.Combine(fileName, projectNumber+"_"+projectName);
    fileName = Path.Combine(fileName, "/99_Other/project_logo.png");
    return File(fileName, "image/png");
}
现在从您的视图中,通过传递参数值来调用此方法

<div class="project" style="background-image: url('@Url.Action("GetImg",
      new { companyName=project.CompanyName,clientName=project.ClientName,
      projectNumber = project.ProjectNumber,projectName=project.ProjectName})')"></div>


P.S.您实际上没有1000 TB的图像,是吗嗯。。。用户必须能够从GUI访问1000 TB的内容。基本上,我们正在为媒体工作流制作一个项目经理。我不确定是否安装Web服务器是一种选择,这是一个局域网,我们需要保持限制到位,但会考虑它。基本上,媒体可以是4K视频、3D模型等等。。。因此,存储必须快速且严格控制。事实上,我开始担心客户端应用程序会比网站更合适。但这也会有同样的问题。。。如果不在每个客户端上安装数据服务器,客户端应用程序仍然无法访问数据服务器。。。选项2似乎是唯一可能的解决方案-它保持控制,因为只有一个web服务器可以访问图像,但可以将图像提供给浏览器。请看一下使用mvc:服务图像,然后将图像源设置为您创建的为图像服务的操作EAH。。。我们可以在每个客户机上安装它,只有大约30个客户机。我的意思是,我们的规范甚至要求能够在用户客户端挂载其中一个项目文件夹,这对浏览器来说可能是一个真正的问题。很多东西似乎都在把我指向WPF,但唉,它也必须在Mac上运行!!!选项2我还不熟悉,但会学习;我怀疑这涉及到将文件从安装的驱动器下载到web服务器并发送到客户端。。。我怀疑它对css bk img不起作用,但我可以找到一种解决方法。此外,如果IIS是弱链接,那么使用快速存储也会变得很愚蠢。您实际上没有1000 TB的图像,是吗嗯。。。用户必须能够从GUI访问1000 TB的内容。基本上,我们正在为媒体工作流制作一个项目经理。我不确定是否安装Web服务器是一种选择,这是一个局域网,我们需要保持限制到位,但会考虑它。基本上,媒体可以是4K视频、3D模型等等。。。因此,存储必须快速且严格控制。事实上,我开始担心客户端应用程序会比网站更合适。但这也会有同样的问题。。。如果不在每个客户端上安装数据服务器,客户端应用程序仍然无法访问数据服务器。。。选项2似乎是唯一可能的解决方案-它保持控制,因为只有一个web服务器可以访问图像,但可以将图像提供给浏览器。请看一下使用mvc:服务图像,然后将图像源设置为您创建的为图像服务的操作EAH。。。我们可以在每个客户机上安装它,只有大约30个客户机。我的意思是,我们的规范甚至要求能够在用户客户端挂载其中一个项目文件夹,这对浏览器来说可能是一个真正的问题。很多东西似乎都在把我指向WPF,但唉,它也必须在Mac上运行!!!选项2我还不熟悉,但会学习;我怀疑这涉及到将文件从安装的驱动器下载到web服务器并发送到客户端。。。我怀疑它对css bk img不起作用,但我可以找到一种解决方法。而且,使用fast storag也会让人觉得很愚蠢
<div class="project" style="background-image: url('@Url.Action("GetImg",
      new { companyName=project.CompanyName,clientName=project.ClientName,
      projectNumber = project.ProjectNumber,projectName=project.ProjectName})')"></div>