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
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.
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();
}
}
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");
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());
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?
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.
Só avise depois se conseguiu resolver.
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.
Discussions about Alfresco Content Services and Alfresco Process Services in Portuguese
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.