Desarrollo Liferay: Subir archivos a la libreria de documentos

20-05-2011
 

La gestión de documentos siempre es complicada en cualquier aplicación web, Liferay nos ofrece la solución de la ‘librería de documentos’, que nos permite olvidarnos del diseño y implementación de la persistencia de los ficheros. En mi opinión es mejor usarla, ya que es totalmente transparente para nosotros donde se guardan los ficheros independientemente de plataformas, bases de datos, etc.. Eso si, seguro que a muchos desarrolladores no les gusta eso de no tener controlado en que carpeta se guardan los ficheros o en que tabla de la base de datos.

Primero vemos como lo hacemos para capturar los archivos provenientes de un formulario HTML (Acordaos de poner el dichoso enctype=’multipart/form-data’). El ejemplo procesa una acción de una clase que extiende de com.liferay.util.bridges.mvc.MVCPortlet:

FileItemFactory fif = new DiskFileItemFactory();
PortletFileUpload pfu = new PortletFileUpload(fif);
List fileItems = pfu.parseRequest( actionRequest );
Iterator parametros = fileItems.iterator();

while (parametros.hasNext()) {
   FileItem actual = (FileItem) parametros.next();

    /* Aquí el código que guarda los ficheros */
   }

Ahora nos queda la implementación de la parte que guarda los ficheros en la librería de documento. En este ejemplo guardaremos los ficheros en la carpeta raíz(FolderId 0) del usuario(UserId 10658):

DLFileEntry file = DLFileEntryLocalServiceUtil.addFileEntry(
   10658, // Userid
   (long) 10157 /* Grupo guest */,
   (long) 0, // folderId
   actual.getName(), // Name
   actual.getName(), // Tittle
   "", // Changelog
   "", // Description
   null, // Extra settings
   actual.getInputStream(),
   actual.getSize(),
   new ServiceContext() ); // Service context

Las classes de la API de Liferay para la gestión de contenidos estan a partir del path com.liferay.portlet.documentlibrary y las classes para subir los archivos están a partir del path org.apache.commons.fileupload (Ojo que hay que importar Jars).

Comments

2 Responses to “Desarrollo Liferay: Subir archivos a la libreria de documentos”
  1. Carlos Zela says:

    Hola albert, tengo una consulta ya he podido subir documentos a la biblioteca pero necesito hacer una validacion sobre el tamaño de archivo, mi pregunta es como puedo obtener el valor que le seteo en la opcion “Administracion del servidor/ File Upload” en el tamaño maximo soportado desde mi aplicacion java? de que clase lo puedo obtener??
    Gracias de antemano

  2. Hola Carlos,

    Puedes usar la ‘classe com.liferay.portal.kernel.util.PropsUtil’ y el método ‘get’.

    Saludos,

Leave a Reply

© Albert Coronado Calzada