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
Probablemente es esta incidencia de Alfresco que en esa versión no está resuelta:
https://issues.alfresco.com/jira/browse/MNT-2624
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?
Es similar al parche que aplicó Alfresco para versiones posteriores:
Buen trabajo!
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.