我为一个客户创建了这个网站,希望能够上传图像,然后使用这些图像在他的网站上创建一些动态内容。一切正常,但现在我想在子域上隔离管理部分(他可以在哪里添加图像并创建他的内容)。
所以目前,我有两个项目。图片上传到的地方,以及必须访问这些图片的人(这是我的问题)。
我已阅读与此问题相关的多个主题,但尚未找到解决方案,我永远无法在当前项目之外找到路径。
我现在想的唯一可行的方法是在主网站上安装某种API,当图像上传到管理网站时,将该文件发送到主网站,但这看起来很漂亮知道我的图像将在同一台服务器上的过度杀伤。
请注意:
谢谢!
而不是仅在数据库中保存文件(图像)的名称,例如" image1.png"然后我尝试在另一个项目中检索路径,最后在数据库中保存绝对URL,以便我可以直接使用该URL。
public static string ResolveServerUrl(string serverUrl, bool forceHttps)
{
if (serverUrl.IndexOf("://") > -1)
return serverUrl;
string newUrl = serverUrl;
Uri originalUri = System.Web.HttpContext.Current.Request.Url;
newUrl = (forceHttps ? "https" : originalUri.Scheme) +
"://" + originalUri.Authority + newUrl;
return newUrl;
}
这将为您提供一个类似http://yourdomain/path/to/image.jpg
的URL,因此您可以将其直接保存在数据库中,并在另一个项目中使用它。
答案 0 :(得分:0)
我现在想的唯一可行的方法是在主网站上安装某种API,当图像上传到管理网站时,将该文件发送到主网站
我认为你只是回答了自己的问题。这确实是要走的路,或者我应该说你正朝着企业SOA架构的正确方向......你仍然远离它。但是,这是一个良好的开端,您开始意识到您的系统正在发展并要求更强大的架构
但是,知道我的图像将在同一台服务器上,这似乎相当矫枉过正。
这是一个错误的陈述,因为如果您设计得很好,您可以轻松扩展到不同的服务器和平台,而不会影响您的客户端应用程序。假设将来,内容被移动到自己的服务器,您只需对您的“内容服务”进行相关修改,而您的客户端应用程序根本不需要更改,它们仍指向相同的端点,永远不会注意到“内容服务”的内部发生了什么。这意味着您的客户端应用程序只关心从“内容服务”获取内容而不知道内容实际托管的位置,无论是在Windows Server,Linux服务器,Sql数据库,Oracle数据库,在美国还是中国。客户端应用程序不负责处理内容的处理方式,而只需知道如何提供内容
希望它有意义。我可以为您提供一些解释此类架构绝对优势的链接