2013-06-09 3 views
3

Dans Liferay6.1, je souhaite ajouter des images par programmation dans la bibliothèque de documents?Ajout par programme d'images à Liferay Document Library version 6.1

Ceci est ma principale méthode que je veux ajouter une image dans la bibliothèque de documents par elle:

public class ImgGallery { 
    public static void main(String[] args) throws SystemException, FileNotFoundException { 
     byte[] bytes = new byte[0]; 
     File srcfile = new File("C:\\Users\\my-pc\\Pictures\\extra\\myPhoto.jpg"); 
     InputStream in = new FileInputStream(srcfile); 
     long repositoryId = 10180; 
     long folderId = 10651; 
     Map<String, Fields> fieldsMap = new HashMap<String, Fields>(); 
     DLFileEntryLocalServiceUtil.addFileEntry(
       10196, repositoryId, repositoryId, folderId, 
       "filename", MimeTypesUtil.getContentType("behnaz.jpg"), 
       "title", "description", "changeLog", 0, fieldsMap, 
       srcfile, null, bytes.length, serviceContext 
     ); 
    } 
} 

Cela ne fonctionne pas - je ne sais pas quels arguments pour fournir à DLFileEntryLocalServiceUtil.addFileEntry?

+1

Quel est le problème que vous avez dans les arguments? –

+0

@Lucky Boy, avec trois arguments: ServiceContext-file-inputstream Pouvez-vous m'aider? – brelian

Répondre

3

pour ajouter un fichier à la bibliothèque de documents Liferay

vous aurez besoin d'un dossier, que vous pouvez créer dans le panneau de contrôle de Liferay, mon dossier est TestFolder. Vous le recherchez avec DLFolderLocalServiceUtil.getFolder. Vous avez besoin des types dlfileentry. J'espère que nous comprendrons le reste du. Vous devez ajouter l'entrée de fichier et après cela, vous devez le mettre à jour pour être approuvé.

ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); 
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(request); 
File file = uploadRequest.getFile("uploadFile"); 
DLFileEntry fileEntry = null; 
Long lessonId = ParamUtil.getLong(request, "lid"); 
Lesson lll = LessonLocalServiceUtil.getLesson(lessonId); 
String lesName = URLEncoder.encode(lll.getName(themeDisplay.getLocale())); 
Date da = new Date(); 
String ext = FileUtil.getExtension(file.getName()); 
String dat = new SimpleDateFormat("yyyy-MM-dd").format(da); 

String title = lesName + "-" + dat + "." + ext; 
long portraitId = themeDisplay.getUser().getPortraitId(); 
byte[] imageBytes = FileUtil.getBytes(file); 
InputStream is = new ByteArrayInputStream(imageBytes); 
PortletPreferences preferences = request.getPreferences(); 
String nameRo=uploadRequest.getParameter("nameRO"); 
String nameEn=uploadRequest.getParameter("name"); 

DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, "TestFolder"); 
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), request); 
List<DLFileEntryType> tip = DLFileEntryTypeLocalServiceUtil.getFileEntryTypes(DLUtil.getGroupIds(themeDisplay)); 

fileEntry = DLFileEntryLocalServiceUtil.addFileEntry(themeDisplay.getUserId(), 
     themeDisplay.getScopeGroupId(), 
     themeDisplay.getScopeGroupId(), 
     dlFolder.getFolderId(), 
     file.getName(), 
     MimeTypesUtil.getContentType(file), 
     title, 
     request.getParameter("name"), 
     "", 
     tip.get(0).getFileEntryTypeId(), 
     null, 
     file, 
     is, 
     file.getTotalSpace(), 
     serviceContext); 

DLFileEntryLocalServiceUtil.updateFileEntry(
     themeDisplay.getUserId(), 
     fileEntry.getFileEntryId(), 
     file.getName(), 
     MimeTypesUtil.getContentType(file), 
     title, 
     "", 
     "", 
     true, 
     tip.get(0).getPrimaryKey(), 
     null, 
     file, 
     is, 
     file.getTotalSpace(), 
     serviceContext); 

EDIT: Pour obtenir les URL de téléchargement fileentry vous pouvez utiliser

DLFileEntry dlf = DLFileEntryLocalServiceUtil.getDLFileEntry(f.get(i).getFileEntryId()); 
<a href='<%=themeDisplay.getPortalURL()+"/c/document_library/get_file?uuid="+DL.getUuid()+"&groupId="+themeDisplay.getScopeGroupId() %>' download> 
Download </a> 
+0

Je suis sûr que c'était le format java le plus confus que j'ai jamais vu.Votre nom de variable est très étrange aussi, mais j'essaie de ne pas y toucher. – Nenotlep

1

Essayez-vous d'appeler cette fonction API à partir d'une ligne de commande? (comme le suggère la méthode main): Vous ne pouvez pas démarrer une JVM et appeler les fonctions de l'API Liferay car aucune initialisation n'est encore effectuée.

Vous devrez appeler des fonctions API (en particulier, Services locaux) à partir d'une application Web, par ex. un portlet ou un hook - cela ne vient généralement pas d'une méthode principale. Edit: Jetez un oeil à la javadoc, accordée, cela ne vous donne pas beaucoup d'indices autres que les noms des arguments, mais si vous passez par ceux-ci et voir le implementation aussi, il y a certaines choses qui pourraient valoir la peine d'essayer/checking:

  • Assurez-vous que userId est un ID valide pour un utilisateur.
  • Assurez-vous que votre valeur pour groupId et repositoryId est également valide - par ex. il doit être l'identifiant d'un site.
  • Idem pour folderId: Assurez-vous que c'est un ID valide pour un dossier. Pour cet exemple, nous ne savons pas comment vous avez trouvé la valeur.
  • Vous donnez 0 pour la taille (bytes.length)
  • Je suppose que le fichier que vous avez codé en dur existe réellement? Faire supplémentaire supplémentaire vous que vous ne disposez pas d'une faute de frappe dans FOLDERNAME ou Fichier-

Si cela ne résout pas votre problème, laissez-nous savoir quel est le problème exact que vous avez avec vos arguments: «J'ai problème » est pas d'informations vraiment assez pour toute aide significative

+0

exactement je veux télécharger des images dans un dossier exact que j'ai créé dans la bibliothèque de documents par un portlet. Je pense que pour une partie liée à ajouter une image dans ce dossier, je peux utiliser "DLFileEntryLocalServiceUtil.addFileEntry()" dans mon portlet. Est ce bien? Ou mon idée est fausse ????????/ – brelian

Questions connexes