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

时间:2018-04-10 14:17:06

标签: url media hybris

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

Ex:/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中捕获了一个servlet请求(然后是out.print(request.getServerName()+":"+request.getServerPort());),我有办法将这些信息传播给我的工作吗?

1 个答案:

答案 0 :(得分:1)

在属性文件

中配置媒体URL

使用您各自的值

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

在您的工作中获取MediaUrlForSite

  • 获取当前会话网站
  • 获取getMediaUrlForSite
  • Concate getMediaUrlForSite和mediaURL
@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()
相关问题