creazione file

cancel
Showing results for 
Search instead for 
Did you mean: 
piter
Member II

creazione file

Salve,

premetto che non sono un esperto di Alfresco in quanto lo sto utilizzando da circa un mese, sto cercando di personalizzare un project AIO che mi permette di creare un nuovo utente; nella creazione dell'utente devo generare anche un qrcode ma ho dei problemi, genero il qrcode ma non riesco ad inserire l'immagine generata nel file, di seguito le istruzioni:
      
       1. var qr =  codeGenerator.createCode(email);
       2. var myUserFolder = userhome.createFolder("Qr-Code");
       3. var doc = myUserFolder.createFile(email + ".png");
 
1. Nella prima istruzione assegno ad una variabile js il risultato di un metodo scritto in java, nella stampa di log alla variabile è associato un riferimento che dovrebbe essere l'immagine
(QR IMAGE ——–> BufferedImage@7f4ef94a://type = 12 IndexColorModel: #pixelBits = 1 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@cb7b92b transparency = 1 transIndex   = -1 has alpha = false isAlphaPre = false     BytePackedRaster: width = 200 height = 200 #channels 1 xOff = 0 yOff = 0);

2. Nella seconda istruzione creo una folder in cui inserire il file con il qrcode;

3. Nella terza istruzione creo il file passandogli il nome e l'estensione ma non riesco ad inserire nel file l'immagine generata nella prima istruzione.

Qualcuno può darmi qualche suggerimento in merito;

grazie in anticipo Pietro.
5 Replies
davidciamberlan
Alfresco Employee

Re: creazione file

Ciao,

con le 3 istruzioni che hai postato, riesci a creare il file ma non gli attribuisci alcun contenuto.
Per farlo puoi usare un codice del genere (che ho copiato dall'esempio sull'upload script nel wiki)


upload = companyhome.createFile(filename) ;
 
upload.properties.content.write(content);
upload.properties.content.setEncoding("UTF-8");
upload.properties.content.guessMimetype(filename);
 
upload.properties.title = title;
upload.properties.description = description;
upload.save();


piter
Member II

Re: creazione file

grazie per il codice inviato,
il problema è che nella istruzione 'upload.properties.content.write(content);' alla variabile content associo il qrcode generato: upload.properties.content.write(qr);
mi crea il file ma non riesco a visualizzare nessuna immagine 'This document can't be previewed. Click here to download it.'
marlb
Member II

Re: creazione file

Cari tutti,
io e il mio collega abbiamo qualche problema con la creazione/upload di immagini in alfresco.
Abbiamo utilizzato i suggerimenti di David per la creazione del file ma sembra che qualcosa non vada a buon fine nella creazione della thumbnail e nella visualizzazione del file.
L'immagine png viene creata in una classe java, salvata su disco (o in alternativa restituita al volo) e successivamente restituita (come BufferedImage) nel file js.

Di seguito le istruzioni utilizzate nel js:

var userhome = companyhome.childByNamePath("User Homes/" + email);
       var myUserfolder = userhome.createFolder("QR Code");
       
       var image = codeGenerator.createCode(email,myUserfolder);
       var doc = myUserfolder.createFile("test" + ".png");
       doc.content = image;
       doc.properties.content.write(doc.properties.content);            
       doc.properties.content.guessMimetype("test" + ".png".toLowerCase());            
       doc.properties.title = "titolo";       
       doc.properties.description = "descrizione";
       
       
       doc.save();

Abbiamo quindi il file di log con alcuni errori:

2016-06-08 16:52:31,544 ERROR [org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl] [defaultAsyncAction5] Failed to execute asynchronous action: Action[ id=efab97e0-230f-495c-bd83-f3dde806ba6d, node=null ]: 05080021 Failed to perform ImageMagick transformation:
Execution result:
   os:         Windows 10
   command:    "C:\Users\Sviluppatore 3\cinema-ba-poc\imagemagick\imconvert.exe" C:\Users\SVILUP~1\AppData\Local\Temp\Alfresco\ImageMagickContentTransformerWorker_source_203437000961620418.png[0] -auto-orient -resize "100x100>" C:\Users\SVILUP~1\AppData\Local\Temp\Alfresco\ImageMagickContentTransformerWorker_target_7754908562306876172.png
   succeeded:  false
   exit code:  1
   out:       
   err:        imconvert.exe: unable to load module `C:\Users\Sviluppatore 3\cinema-ba-poc\imagemagick\modules\coders\IM_MOD_RL_PNG_.dll': An unknown error occurred @ error/module.c/OpenModule/1282.
imconvert.exe: no decode delegate for this image format `PNG' @ e
org.alfresco.error.AlfrescoRuntimeException: 05080023 Creation of thumbnail 'doclib' failed
   at org.alfresco.repo.thumbnail.CreateThumbnailActionExecuter.executeImpl(CreateThumbnailActionExecuter.java:206)
   at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute(ActionExecuterAbstractBase.java:267)
   at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(ActionServiceImpl.java:839)
   at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionServiceImpl.java:740)
   at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1$1.execute(AsynchronousActionExecutionQueueImpl.java:423)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:457)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:326)
   at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper$1.doWork(AsynchronousActionExecutionQueueImpl.java:432)
   at org.alfresco.repo.tenant.TenantUtil.runAsWork(TenantUtil.java:119)
   at org.alfresco.repo.tenant.TenantUtil.runAsTenant(TenantUtil.java:88)
   at org.alfresco.repo.tenant.TenantUtil$1.doWork(TenantUtil.java:62)
   at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:548)
   at org.alfresco.repo.tenant.TenantUtil.runAsUserTenant(TenantUtil.java:58)
   at org.alfresco.repo.action.AsynchronousActionExecutionQueueImpl$ActionExecutionWrapper.run(AsynchronousActionExecutionQueueImpl.java:435)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 05080022 Content conversion failed:
   reader: ContentAccessor[ contentUrl=store://2016/6/8/16/50/4dde4765-85d2-49ce-86af-0e6ce4b9640c.bin, mimetype=text/plain, size=280, encoding=UTF-8, locale=it_IT]
   writer: ContentAccessor[ contentUrl=store://2016/6/8/16/52/945b48a5-205a-46e9-87e8-3e1abc8913a6.bin, mimetype=image/png, size=0, encoding=UTF-8, locale=it_IT]
   options: {use=doclib, contentReaderNodeRef=workspace://SpacesStore/76f5daef-72cd-43f6-9cf8-18ab7de034be, contentWriterNodeRef=null, sourceContentProperty=null, imageAutoOrient=true, targetContentProperty=null, commandOptions=, imageResizeOptions=ImageResizeOptions [width=100, height=100, maintainAspectRatio=true, percentResize=false, resizeToThumbnail=false, allowEnlargement=false], includeEmbedded=null}
   limits: {timeoutMs=120000, pageLimit=1}
   claimed mime type: text/plain
   detected mime type: text/plain
   transformer not found

   at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:358)
   at org.alfresco.repo.content.ContentServiceImpl.transform(ContentServiceImpl.java:631)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
   at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.model.ml.MLContentInterceptor.invoke(MLContentInterceptor.java:129)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:159)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at com.sun.proxy.$Proxy73.transform(Unknown Source)
   at org.alfresco.repo.rendition.executer.AbstractTransformationRenderingEngine$TransformationCallable$1.doWork(AbstractTransformationRenderingEngine.java:439)
   at org.alfresco.repo.rendition.executer.AbstractTransformationRenderingEngine$TransformationCallable$1.doWork(AbstractTransformationRenderingEngine.java:1)
   at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:548)
   at org.alfresco.repo.rendition.executer.AbstractTransformationRenderingEngine$TransformationCallable.call(AbstractTransformationRenderingEngine.java:429)
   at org.alfresco.repo.rendition.executer.AbstractTransformationRenderingEngine$TransformationCallable.call(AbstractTransformationRenderingEngine.java:1)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   … 3 more
Caused by: org.alfresco.service.cmr.repository.ContentIOException: 05080021 Failed to perform ImageMagick transformation:
Execution result:
   os:         Windows 10
   command:    "C:\Users\Sviluppatore 3\cinema-ba-poc\imagemagick\imconvert.exe" C:\Users\SVILUP~1\AppData\Local\Temp\Alfresco\ImageMagickContentTransformerWorker_source_203437000961620418.png[0] -auto-orient -resize "100x100>" C:\Users\SVILUP~1\AppData\Local\Temp\Alfresco\ImageMagickContentTransformerWorker_target_7754908562306876172.png
   succeeded:  false
   exit code:  1
   out:       
   err:        imconvert.exe: unable to load module `C:\Users\Sviluppatore 3\cinema-ba-poc\imagemagick\modules\coders\IM_MOD_RL_PNG_.dll': An unknown error occurred @ error/module.c/OpenModule/1282.
imconvert.exe: no decode delegate for this image format `PNG' @ e
   at org.alfresco.repo.content.transform.magick.ImageMagickContentTransformerWorker.transformInternal(ImageMagickContentTransformerWorker.java:198)
   at org.alfresco.repo.content.transform.magick.AbstractImageMagickContentTransformerWorker.transform(AbstractImageMagickContentTransformerWorker.java:273)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.alfresco.repo.management.subsystems.SubsystemProxyFactory$1.invoke(SubsystemProxyFactory.java:72)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at com.sun.proxy.$Proxy52.transform(Unknown Source)
   at org.alfresco.repo.content.transform.ProxyContentTransformer.transformInternal(ProxyContentTransformer.java:100)
   at org.alfresco.repo.content.transform.AbstractContentTransformer2.transform(AbstractContentTransformer2.java:250)
   … 31 more

Nel log riscontriamo l'errore:

"imconvert.exe: unable to load module `C:\Users\Sviluppatore 3\cinema-ba-poc\imagemagick\modules\coders\IM_MOD_RL_PNG_.dll': An unknown error occurred @ error/module.c/OpenModule/1282."

la libreria cercata è "IM_MOD_RL_PNG_.dll" ma nella cartella coders è presente "IM_MOD_RL_png_.dll"


Grazie in anticipo a tutti quelli che vorranno darci una mano !

davidciamberlan
Alfresco Employee

Re: creazione file

Ciao,

l'errore riportato nei log riguarda la creazione delle thumbnail (alfresco utilizza allo scopo imagemagik). Come rilevato da voi il problema sta nel fatto che viene rilevato un formato immagine sbagliato ("PNG" (maiuscolo) invece di png (minuscolo)).

L'errore è probabilmente correlato alla creazione del document con l'immagine.
Perchè fate questo?

doc.content = image;
doc.properties.content.write(doc.properties.content);

Nel vostro caso dovreste passare alla funzione write un InputStream, come riportato nell'ultima parte della documentazione ufficiale sulla funzion write.

PS: mettete il tipo corretto dell'immagine (e ripulite un po' il codice!) nella funzione guessMimetype()… questo dovrebbe risolvere anche l'errore generato da imagemagik.
marlb
Member II

Re: creazione file

Ciao David,
grazie per i tuoi sempre preziosi consigli.
Abbiamo risolto il problema dell'upload dell'immagine decidendo di utilizzare direttamente da una classe java il servizio di upload che mette a disposizione Alfresco.
Crediamo purtroppo che dietro il problema affrontato si nasconda un bug in quanto con il formato "png" ImageMagic non riesce a trasformare l'immagine, siamo riusciti a fare l'upload di un'immagine "bmp".
Facendo qualche ricerca su internet ho visto che anche altri sviluppatori hanno avuto il nostro stesso problema.
Grazie ancora,

Maria