留言板

Caricamento documenti ed estensione del file

thumbnail
Marco Azzalini,修改在7 年前。

Caricamento documenti ed estensione del file

Regular Member 帖子: 146 加入日期: 14-11-18 最近的帖子
Salve a tutti, devo realizzare un importatore di documenti ed ho uno strano problema con l'estensione del file che carico.
Per caricare i documenti (che sono già presenti nel filesystem del server), uso questa chiamata:
FileEntry fileEntry = DLAppLocalServiceUtil.addFileEntry(themeDisplay.getUserId(),
	themeDisplay.getScopeGroupId(), folder.getFolderId(), title,
	MimeTypesUtil.getContentType(fileToImport), null, StringPool.BLANK,
        StringPool.BLANK, fileToImport, serviceContext);

dove fileToImport è una istanza di java.io.File che punta al file fisico su disco.
Il file viene caricato correttamente nella Document Library, ma c'è un problema.
Quando navigo nel folder dove ho messo il documento, vedo che la sua icona è quella generica, non quella di un file Word (visto che sono tutti file MS Word) ed in effetti, controllando nella tabella dlfileentry, il campo extension è vuoto. Sembra che l'estensione del file (.doc) venga ignorata; ho verificato che il mime type venga correttamente risolto come 'application/ms-word' ma sembra che neanche questo sia utilizzato da Liferay per impostare l'estensione.
Qualcuno sa dirmi se sto sbagliando/dimenticando qualcosa? Ho provato a passare nel serviceContext questa informazione sotto forma di Field ma mi becco una eccezione.

Naturalmente una successiva chiamata del tipo:
DLFileEntry dlfe= DLFileEntryLocalServiceUtil.getDLFileEntry(fileEntry.getFileEntryId());
dlfe.setExtension(ext);

risolve la cosa, ma dovendo importare migliaia di file vorrei evitare....

ciao e grazie
Marco
thumbnail
Daniele Baggio,修改在7 年前。

RE: Caricamento documenti ed estensione del file (答复)

Expert 帖子: 336 加入日期: 08-12-5 最近的帖子
Per fare le cose correttamente e assicurare che il FileEntry entri nel sistema con tutti gli attributi corretti è importante che usi DLAppServiceUtil e non il servizio locale.
Visto che stai facendo una importazione, attenzione ad avere un contesto di permessi inizializzato con una utenza definita. Il document ha bisogno di avere l'owner che tu ritieni adatto.
Usa PermissionThreadLocal.setPermissionChecker(PermissionChecker permissionChecker) per impostare un contesto di permessi e un utente owner.

Sei al simposio oggi?
Daniele

@baxtheman
thumbnail
Marco Azzalini,修改在7 年前。

RE: Caricamento documenti ed estensione del file

Regular Member 帖子: 146 加入日期: 14-11-18 最近的帖子
Daniele Baggio:
Per fare le cose correttamente e assicurare che il FileEntry entri nel sistema con tutti gli attributi corretti è importante che usi DLAppServiceUtil e non il servizio locale.
Visto che stai facendo una importazione, attenzione ad avere un contesto di permessi inizializzato con una utenza definita. Il document ha bisogno di avere l'owner che tu ritieni adatto.
Usa PermissionThreadLocal.setPermissionChecker(PermissionChecker permissionChecker) per impostare un contesto di permessi e un utente owner.

Ciao Daniele, io sapevo che la differenza tra servizi locali e non, riguardava il fatto di bypassare tutti i controlli relativi ai permessi/autenticazioni necessarie, al netto di quelle, ritenevo le funzionalità identiche. Ad ogni modo il tuo è un suggerimento interessante e lo provo subito anche se l'utenza che uso per l'importazione batch è la stessa che utilizzo per fare le medesime operazioni in modalità interattiva (in effetti l'importazione viene semplicemente fatta da un'altra portlet, quindi non da un contesto esterno a Liferay) e all'interno delle tabelle dlfileentry e dlfileversion vedo che tutti i campi di 'audit' (userId,company, group, etc) sono impostati correttamente.


Sei al simposio oggi?
Daniele

@baxtheman


no, purtroppo niente simposio... troppo da fare quest'anno :-)
Ti tengo informato se ottengo qualcosa di nuovo.
ciao
Marco
thumbnail
Marco Azzalini,修改在7 年前。

RE: Caricamento documenti ed estensione del file

Regular Member 帖子: 146 加入日期: 14-11-18 最近的帖子
Ciao Daniele, in effetti ci hai visto giusto ;-) La chiamata al servizio non locale imposta correttamente anche l'estensione e, se devo dirla tutta, probabilmente anche altre cose dato che mi sono accorto che per i documenti caricati precedentemente, non comparivano nemmeno i link per scaricare il file in altri formati(!) Questo non dipendeva dal fatto della mancata valorizzazione del campo extension perché anche aggiornandola, il problema non si risolveva.
Questo fatto mi apre tutta una serie di dubbi in generale sul fatto di usare i servizi 'local' ma rischiamo di andare troppo in la :-)
Per ora ti saluto e ti ringrazio
ciao
Marco