Microsoft Word y Alfresco WebDav. Content Type vacío

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

Microsoft Word y Alfresco WebDav. Content Type vacío

Buenos días 

Nosotros le permitimos al usuario crear y modificar documentos de word (.doc, .docx) sobre Alfresco, a través de WebDav usando el cliente Microsoft Word. 

Alfresco Version: Community - v3.4.0 (d 3370)

¿Que ocurre? 

Cuando guardamos un documento Word en Alfresco usando WebDav, dentro de las propiedades del documento, el content-type aparece en blanco. Y no sabemos porque ocurre esto. 

¿Sabeís a que es debido esto? 

¿Quien determina el content-type? 

Muchas gracias 

Guillermo Santos

3 Replies
angelborroy
Alfresco Employee

Re: Microsoft Word y Alfresco WebDav. Content Type vacío

Probablemente es esta incidencia de Alfresco que en esa versión no está resuelta:

https://issues.alfresco.com/jira/browse/MNT-2624

Hyland Developer Evangelist
gsantos
Member II

Re: Microsoft Word y Alfresco WebDav. Content Type vacío

Hola

Cuando intento guardar un fichero de microsoft word sobre el repositorio de documento de Alfresco a través de WebDav https://alfresco.dev.es/alfresco/webdav/Test/Test.docx  se realizan varias peticiones HTTPS.

La petición que sube el fichero al repositorio de Alfresco es mediante el verbo HTTP PUT, para ello decidi sobreescribir el comportamiento dentro de alfresco de la clase org.alfresco.repo.webdav.PutMethod (alfresco-remote-api-3.4.d.jar) añadiendo una serie de mensajes de Logging para ver que realmente que hace Alfresco cuando se realiza dicha petición PUT. En esta clase PutMethod se determina el tipo MimeType (Content Type) que tendra el documento en Alfresco.

Aqui viendo los mensajes de log podemos ver que el tipo MIME se determina en base a la cabecera HTTP content type (m_strContentType = m_request.getHeader(WebDAV.HEADER_CONTENT_TYPE)) de la petición HTTP PUT que es text/xml; charset="utf-8"

13:53:24,220 DEBUG [org.alfresco.webdav.protocol] GPG Put node:

     user: admin

     path: /Test/Test.docx

13:53:24,242 DEBUG [org.alfresco.webdav.protocol] GPG Mimetype mimetype: text/xml; charset="utf-8"

13:53:24,400 DEBUG [org.alfresco.webdav.protocol] PUT took 182ms to execute

Es decir, ALFRESCO siempre va asignar el content type como si fuera un documento XML, cuando en realidad se trata de un documento de Word y el content type debería ser application/vnd.openxmlformats-officedocument.wordprocessingml.document

¿Cuál es mi solución?

He modificado la clase org.alfresco.repo.webdav.PutMethod para obligar que se determine el mimetype (content type) Alfresco en lugar de usar el mimetype de la petición.

String mimetype = null;
if (m_strContentType != null)
{
    mimetype = m_strContentType;
}        
else
{
    String guessedMimetype = getMimetypeService().guessMimetype(contentNodeInfo.getName());
    mimetype = guessedMimetype;
    if (logger.isDebugEnabled())
    {
         logger.debug("GPG guessedMimetype: " + guessedMimetype);
    }                        
}
mimetype = getMimetypeService().guessMimetype(contentNodeInfo.getName());
if (logger.isDebugEnabled())
{
     logger.debug("GPG Mimetype mimetype: " + mimetype);
}                
writer.setMimetype(mimetype);

Ahora si accedemos a Alfresco vemos que ya tiene su Content Type correctamente.

¿Que te parece Angel?

angelborroy
Alfresco Employee

Re: Microsoft Word y Alfresco WebDav. Content Type vacío

Es similar al parche que aplicó Alfresco para versiones posteriores:

https://github.com/ecm4u/community-edition-5.2.e-patched-OLD/blob/master/root/projects/remote-api/so...

Buen trabajo!

Hyland Developer Evangelist