在hybris中以编程方式获取绝对媒体路径

Get absolute media path programatically in hybris

我正在处理 Hybris 版本 5.4.0,特别是导出数据的工作。我希望导出媒体的完整外部路径(即 URL)而不是相对路径

例如:/medias/sys_master/h76/hd6/8865465963102.jpg --> http://myserver:myport/medias/sys_master/h76/hd6/8865465963102.jpg

我已经在 Hybris Wiki 中看到了使用语言环境中的静态声明来完成此操作的方法,但我想以编程方式执行此操作,因为我的应用程序可能 运行 在各种服务器和环境中。

我已经尝试过在 Java 中获取服务器地址的常用方法(例如使用 INet),但它没有用。

最后,我看到在 HMC 中,我想要的确切信息显示在此处的末尾:

Copyright (c) 2000-2013 hybris AG - hybris   
Version:    null
    5.4.0.0
    Last compile: 20180410 1543
    Release date: 20141113 1921
Server: localhost:9101
Locale: English (United Kingdom) - en_GB
Timezone:   Central European Time - Europe/Paris

但它在 defaultContent_jsp.java(然后 out.print(request.getServerName()+":"+request.getServerPort());)中捕获了一个 servlet 请求,我有办法将此信息传播到我的工作吗?

在 属性 文件中配置媒体 URL

mycmssitemysite 更改为您各自的值

media.mycmssite.http=https\://www.mysite.com
media.mycmssite.https=https\://www.mysite.com

在你的工作中获取 MediaUrlForSite

  • 获取当前会话站点
  • 获取 getMediaUrlForSite
  • 连接 getMediaUrlForSite 和媒体URL

@Resource(name = "cmsSiteService")
private CMSSiteService cmsSiteService;

@Resource(name = "siteBaseUrlResolutionService")
private SiteBaseUrlResolutionService siteBaseUrlResolutionService;

MediaModel media = ...
final CMSSiteModel currentSite = cmsSiteService.getCurrentSite();

final String mediaUrlForSite = siteBaseUrlResolutionService.getMediaUrlForSite(currentSite, true, "");

String downloadURL = mediaUrlForSite + media .getURL()