2012-08-13 92 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一個梅索德()了。

相關問題