2012-08-13 17 views
8

Tengo varios contenidos en mi biblioteca de documentos (imágenes, documentos, videos ...) y quiero obtener la URL de descarga para cada uno de ellos programáticamente, para que pueda muéstrelos en un jsp en un portlet personalizado.Cómo obtener la URL de descarga para un contenido de biblioteca de documentos mediante programación

Investigando, he encontrado esta página con una posible solución: https://www.liferay.com/community/forums/-/message_boards/message/11073293 pero no estoy cómodo con él, ya que implica la construcción de la URL manualmente con varios parámetros.

Me gustaría saber si hay una manera mejor ("forma Liferay") para hacer esto.

+0

Por ejemplo, para compilar una url de inicio de sesión, puede hacerlo manualmente con una cadena '/ c/portal/login' y obtener el p_l_id y concatenar ... pero en lugar de hacerlo manualmente, puede invocar themeDisplay.getURLSignIn () y Liferay lo construye para ti. Estoy buscando algo similar en este caso. – stoldark

Respuesta

8

Me temo, pero esa es la manera liferay :-).

Si aún necesita más confirmación, consulte source code del método DLUtil#getPreviewURL.

Este método ha sido utilizado por liferay Documents & Media portlet y Document and Media display portlet. También puede consultar la fuente JSP sobre cómo estos portlets usan el método anterior /portal-web/docroot/html/portlet/document_library/action/download.jspf.

P.S .:
Puede convertir DLFileEntry-FileEntry con este static method.

+0

Gracias Prakash, no me incomoda usar el modo Liferay, siempre que pueda usar un método como DLUtil.getPreviewURL de mi código y abstraerlo de los detalles. Lo que me incomodaba era tener que construir la url manualmente. – stoldark

+0

Sin embargo, estoy trabajando con objetos DLFileEntry y DLUtil.getPreviewURL espera un objeto FileEntry. ¿Cómo puedo evitar esto? Intento enviar contenido desde DLFileEntry, pero eso me está dando un error. ¿Algunas ideas? – stoldark

+1

revise este método estático: http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portlet/documentlibrary/service/DLAppServiceUtil.html#getFileEntry%28long%29 –

6

Por tales preguntas siempre veo fuentes de Liferay. Aquí es el fragmento que construir la URL de descarga de archivos en "Documents and Media Library" de portlets:

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

pero tienes razón, yo preferiría un méthode como DLFile.getUrl() también.

Cuestiones relacionadas