Canigó - Servei d'Upload 2.3.x
SERVEI D'UPLOADIntroducció
PropósitAquest servei permet que poguem llegir tractar els fitxers que hagin adjuntat els usuaris des dels formularis HTML en el seu navegador Web. Aquest tractament pot ser llegir el fitxer de forma directa, desar-lo al sistema de fitxers o per exemple emmagatzemar-lo en una base de dades. Context i Escenaris d'ÚsEl Servei de Upload de Fitxers es troba ubicat dins els serveis continguts a la capa de Presentació de Canigó. Versions i DependènciesLes dependències descrites a la següent url són requerides per tal de compilar i fer funcionar el projecte: A qui va dirigitAquest document va dirigit als següents perfils:
Documents i Fonts de Referència
Descripció DetalladaArquitectura i ComponentsEls components podem classificar-los en:
+JavaDoc: http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_0/canigo-services-fileupload/apidocs/index.html Instal.lació i ConfiguracióInstal.lacióLa instal.lació del servei requereix de la utilització de la llibreria 'canigo-services-fileupload' i les dependències indicades a l'apartat 'Introducció-Versions i Dependències'. ConfiguracióLa configuració del Servei implica els següents pasos:
Definició del Servei Fitxer de configuració: canigo-services-fileupload.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/spring Indicar el bean del servei (amb id 'fileUploadService') i la implementació escollida. Per la implementació 'FileUploadServiceImpl' definirem les següents propietats:
Exemple:
<bean id="uploadResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> </bean> <bean id="fileUploadService" class="net.gencat.ctti.canigo.services.fileupload.impl. FileUploadServiceImpl"> <property name="maxAttachmentSize" value="$\{fileUploadService.maxAttachmentSize\}"/> <property name="logService" ref="loggingService"/> <property name="resolver" ref="uploadResolver"/> </bean> Definició de la Localització del Fitxer de Propietats del Servei ![]() Fitxer de configuració: canigo-services-configuration.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/spring Seguint el propòsit general del Servei de Configuració definirem a la propietat 'basePropertyFiles' una nova localització pel fitxer de propietats del servei. Exemple:
<bean id="configurationService" class="net.gencat.ctti.canigo.services.configuration. springframework.beans.factory.config.HostPropertyPlaceholderConfigurer"> <property name="basePropertyFiles"> <list> <value>classpath:jdbc/jdbc.properties</value> <value>classpath:mail/mail.properties</value> <value>classpath:file/fileUploadService.properties</value> <value>classpath:file/fileService.properties</value> </list> </property> </bean> Definició de les Propietats del Servei Fitxer de configuració: fileUploadService.properties Ubicació proposada: <PROJECT_ROOT>/src/main/resources/file En aquest fitxer definirem les propietats que permet el servei (veure 'Definició del Servei') Exemple: fileUploadService.maxAttachmentSize=1024 Utilització del ServeiLa utilització del servei comporta 2 pasos:
Definició de la pàgina JSPA la pàgina JSP cal fer tenir en consideració:
Exemple:
<fwk:form action="files.do" styleId="actionForm" reqCode="upload" width="500" method="post" enctype="multipart/form-data">
Canigó exposa una interfície d'utilització, "net.gencat.ctti.canigo.fileupload.FileUploadService", que amaga la implementació real. La interfície té el següent aspecte:
package net.gencat.ctti.canigo.services.fileupload*;* ... /** * Interface to detect fileUploads. * */ public interface FileUploadService { public static final String FILE_UPLOAD_BEAN_FACTORY_KEY="FileUploadService"; UploadedFiles getUploadedFiles(HttpServletRequest request, String[] fieldsToBind); } Aquesta interfíciee només exposa un métode 'getUploadedFiles' que a partir del 'HttpServletRequest' retorna un objecte de tipus UploadedFiles. Aquest objecte permet obtenir cadascun dels fitxers enviats. Així, podem realitzar les següents crides:
Integració amb el Servei Multiidioma i ExcepcionsEl Servei de Upload de Fitxers llença vàries excepcions amb codis per tal que el missatge pugui ser internacionalitzat. En el següent exemple es mostren els codis que s'han de definir: canigo.services.fileupload.attachment_size_exceeded=Attachment size exceeded: {0} bytes (max: {1}*)* ExemplesExempleExemple de formulari
<fwk:form action="files.do" styleId="actionForm" reqCode="upload" width="500" method="post" enctype="multipart/form-data"> <fwk:text styleId="currentDir" property="currentDir"/> <fwk:file styleId="file" property="file"/> <fwk:submit styleId="uploadActionImage"/> </fwk:form> Exemple d'accés des de la Action
UploadedFiles files = FileUploadServiceUtils.getFiles( context.getRequest(), new String[] {"file1"}); if(files.hasFiles()){ if(files.isFileAvailable("file1")){ UploadedFile file1 = files.getFile("file1"); } } En aquest cas hem fet servir el mètode estàtic "getFiles" de la classe auxiliar "net.gencat.ctti.canigo.services.fileupload.FileUploadServiceUtils" Aquest mètode permet utilitzar el servei sense haver de localitzar-lo expressament. |