2012-08-13 71 views
8

我在文档库(图像,文档,视频...)中有几个内容,我希望以编程方式获得每个文档的下载URL,所以我可以将它们显示在定制portlet中的jsp上。如何以编程方式获取文档库内容的下载URL

调查,我发现这个页面有一个可能的解决方案: https://www.liferay.com/community/forums/-/message_boards/message/11073293 但我不舒服,因为这意味着有几个参数手动构建的URL。

我想知道是否有更好的方法(“Liferay方式”)来做到这一点。

+0

例如,要建立一个登录网址,你可以用一个字符串'/ c/portal/login'手工完成,并且伪装p_l_id并且连接...但是不是手动完成,你可以调用themeDisplay.getURLSignIn( )和Liferay为你打造。在这种情况下,我正在寻找类似的东西。 – stoldark 2012-08-13 09:38:48

回答

8

我害怕,但这是liferay的方式:-)。

如果您还需要更多确认,请查看DLUtil#getPreviewURL方法的source code

该方法已被liferay的Documents & Media portletDocument and Media display portlet使用。您也可以检查JSP源代码,了解这些portlet如何使用上述方法/portal-web/docroot/html/portlet/document_library/action/download.jspf

P.S:
可以转换DLFileEntryFileEntry这个static method

+0

感谢Prakash,我不会使用Liferay方式感到不舒服,只要我可以使用DLUtil.getPreviewURL这样的方法从我的代码中抽象出来并从细节中抽象出来。我不舒服的是,必须自己手动构建网址。 – stoldark 2012-08-13 11:07:58

+0

但是,我正在使用DLFileEntry对象,并且DLUtil.getPreviewURL需要一个FileEntry对象。我如何解决这个问题?我试图从DLFileEntry进行投射,但是这给了我一个错误。有任何想法吗? – stoldark 2012-08-13 11:10:41

+1

检查此静态方法:http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portlet/documentlibrary/service/DLAppServiceUtil.html#getFileEntry%28long%29 – 2012-08-13 11:27:31

6

通过这样的问题,我总是看到Liferay的来源。下面是打造“文档和媒体库” portlet中的文件下载网址片段:

<liferay-ui:input-resource 
    url='<%= themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + StringPool.SLASH + fileEntry.getUuid() %>' 
/> 

,但你是对的,我宁愿像DLFile.getUrl一个梅索德()了。

相关问题