03-12-2018 02:02 PM
Boa tarde.
Esta-me acontecer uma situação que não sei se é normal e que me está a criar problemas
Já vi muita informação do CMIS a nível deste assunto, mas ainda não consegui resolver este problema.
Ao criar um documento através do CMIS, atribuído um nome ao documento, ou seja, o documento não fica com o nome do ficheiro, quando faço o download desse ficheiro ele perde a extensão.
Documento, criado com o nome "Fatura" e posterior download
Pasta em disco para onde foi feito o download do ficheiro
Isto que acontece é normal ou esta-me a escapar algo?
Agradeço a ajuda prestada.
MN
03-14-2018 02:22 PM
Boa tarde.
Seria muito útil se você compartilhasse o código que usou para fazer o upload.
O normal é o documento ter o nome exato que você definiu, pois o Alfresco não faz essa "remoção" da extensão.
03-15-2018 07:33 AM
Bom dia Douglas
O código que tenho usado para fazer o upload do ficheiro é o seguinte.
public static void createDocument(Session session) {
Folder parent = session.getRootFolder();
try {
// create a document
Map<String, Object> docProps = new HashMap<String, Object>();
docProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
docProps.put(PropertyIds.NAME, "Fatura");
File f = new File("C:\\Fatura.pdf");
InputStream isFile = new FileInputStream(f);
ContentStream contentStream = session.getObjectFactory().createContentStream(f.getName(), f.length(),
"Adobe PDF Document", isFile);
Document d = parent.createDocument(docProps, contentStream, VersioningState.MAJOR);
isFile.close();
} catch (Exception ex) {
System.out.println("Something has gone horribly wrong.");
ex.printStackTrace();
}
}
03-15-2018 09:10 AM
Bem, o problema está bem claro para mim.
Você está definindo o nome do arquivo sem a extensão, e o Alfresco vai usar o texto que você configurou, e não vai colocar a extensão para você.
docProps.put(PropertyIds.NAME, "Fatura");
Substitua essa linha por algo como
docProps.put(PropertyIds.NAME, "Fatura.pdf");
03-15-2018 10:46 AM
Não estou a incluir a extensão no "PropertyIds.NAME", visto que para a solução que estou a criar os nomes dos documentos não irão coincidir com o nome do ficheiro e será esta propriedade a ser mostrada no lado do cliente(App), por isso é que não estou a incluir a extensão.
Esta é a única forma que usa de modo a não se "perder" a extensão?
Desde que coloquei a pergunta continuei a pesquisar e encontrei informação (CMIS) de como obter a extensão a associar ao ficheiro em função do mimetype do documento quando quero fazer o download, mas que tem algumas limitações em relação as associações entre mimetypes e extensões, nem sempre as associações são as mais corretas.
Document templateDocument = getDocument(session, idDocument);
String extension=MimeTypes.getExtension(templateDocument.getContentStream().getMimeType());
03-15-2018 01:06 PM
O nome do documento é o nome que você vai obter quando fizer o download.
Se você precisa exibir algo na aplicação cliente, porque você não utiliza outra propriedade, como título ou descrição?
03-15-2018 01:38 PM
Já tinha pensado nisso Douglas, mas como sempre. após fazer a minhas investigação, se não fico contente com os resultados, penso sempre que me está a escapar algo. As suas resposta ajudaram a dissipar as duvidas que tinha, obrigado em relação a este assunto.
03-15-2018 03:19 PM
Só avise depois se conseguiu resolver.
03-16-2018 11:30 AM
Sim Douglas, consegui resolver, em conversa com a equipa decidi manter o nome e extensão no PropertyIds.NAME, assim nunca se perde a extensão, mas por outro lado esta dúvida deu para compreender a relação que existe no alfresco entre mimetypes e extensões. Obrigado pela sua ajuda.
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.