两个应用程序之间共享图像

时间:2017-09-22 17:14:50

标签: c# asp.net asp.net-mvc

我有一个管理面板,我将文件上传到~/uploads 从主页网站我想访问这些图像路径。我已经阅读了Server.mapPath(),但它给了我当前正在运行的应用程序的根路径。我想在db中存储图像的绝对路径,以便我可以从主站点访问它们。已阅读有关以base 64的形式在db中存储图像但我想使用文件系统。 抱歉英文不正确..

path = Path.Combine(
    System.IO.Path.GetPathRoot(System.Web.Hosting.HostingEnvironment.MapPath("~/uploads")),
    image.FileName);
image.SaveAs(path);

1 个答案:

答案 0 :(得分:1)

不同场景的不同方式。如果您使用本地IIS来托管应用程序,

  1. 创建一个虚拟目录"上传"在具有写入权限的管理员应用根目录中,指向某个地方,让我们说" d:\ uploads"
  2. 创建一个虚拟目录"上传"在您的前端应用根目录中,指向同一个地方" d:\ uploads"
  3. 修改您在管理应用中上传代码,将文件保存到Path.Combine(System.IO.Path.GetPathRoot(System.Web.Hosting.HostingEnvironment.MapPath("~/uploads")), image.FileName);
  4. store' Path.Combine("〜/ uploads /",image.FileName")'到数据库
  5. 在前面的app中使用{li>来显示图像,如果你使用的是MVC,那么就不需要使用ResolveClientUrl来处理"〜"

    如果你使用基于云的应用程序,比如azure app,那么只需使用azure blob来保存你的文件,亚马逊S3也很棒且易于使用

    如果这两个应用程序托管在不同的服务器上,但是使用相同的子网,则可以使用" \ 192.168.1.1 \ uploads"作为虚拟目录的物理位置,请确保您具有访问网络驱动程序的正确凭据

    如果这两个应用程序不在服务器上,甚至无法访问对方和任何其他第三服务器,那么您可以使用dropbox进行同步,在两台服务器上设置dropbox,将虚拟目录映射到折叠下dropbox,在admin

    上保存文件后,图像将立即同步到前端应用程序