07-05-2018 06:28 AM
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
07-09-2018 03:10 AM
Probablemente es esta incidencia de Alfresco que en esa versión no está resuelta:
https://issues.alfresco.com/jira/browse/MNT-2624
07-18-2018 04:28 AM
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?
07-18-2018 04:55 AM
Es similar al parche que aplicó Alfresco para versiones posteriores:
Buen trabajo!
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.