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>