以编程方式将图像添加到Liferay文档库版本6.1

以编程方式将图像添加到Liferay文档库版本6.1,liferay,liferay-6,Liferay,Liferay 6,在Liferay6.1中,我想通过编程将图像添加到文档库中 这是我想通过它将图像添加到文档库中的主要方法: public class ImgGallery { public static void main(String[] args) throws SystemException, FileNotFoundException { byte[] bytes = new byte[0]; File srcfile = new File("C:\\Users\

在Liferay6.1中,我想通过编程将图像添加到文档库中

这是我想通过它将图像添加到文档库中的主要方法:

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
        );
    }
}
公共类ImgGallery{
公共静态void main(字符串[]args)引发SystemException、FileNotFoundException{
字节[]字节=新字节[0];
File srcfile=新文件(“C:\\Users\\myPC\\Pictures\\extra\\myPhoto.jpg”);
InputStream in=新文件InputStream(srcfile);
长repositoryId=10180;
长folderId=10651;
Map fieldsMap=新的HashMap();
DLFileEntryLocalServiceUtil.addFileEntry(
10196,repositoryId,repositoryId,folderId,
“文件名”,MimeTypesUtil.getContentType(“behnaz.jpg”),
“标题”、“说明”、“变更日志”、0、fieldsMap、,
srcfile,null,bytes.length,serviceContext
);
}
}

这不起作用-我不知道要向
DLFileEntryLocalServiceUtil.addFileEntry提供哪些参数?

您是否试图从命令行调用此API函数?(正如方法
main
所暗示的那样):您不能仅仅启动JVM并调用Liferay API函数,因为还没有完成初始化

您将需要从Web应用程序(例如portlet或钩子)调用API函数(特别是在本地服务上),这通常不会从主方法发生

编辑:看一下,当然,除了参数名称之外,这不会给您提供很多线索,但是如果您仔细查看这些,并看到,可能有一些东西值得尝试/检查:

  • 确保,
    userId
    是用户的有效id
  • 确保
    groupId
    repositoryId
    的值也有效-例如,它需要是站点的id
  • 与文件夹id相同:确保它是文件夹的有效id。对于本例,我们不知道您是如何得出该值的
  • 大小(
    bytes.length
    )为0
  • 我猜你硬编码的文件确实存在?另外要确保文件名或文件夹名没有输入错误

如果这不能解决您的问题,请让我们知道您的论点存在什么问题:“我有问题”的信息实际上不足以提供任何有意义的帮助,以向Liferay文档库添加文件

您需要一个文件夹,您可以在liferay控制面板中创建它,我的文件夹是TestFolder。您可以使用DLFolderLocalServiceUtil.getFolder搜索它。您需要dlfileentrytypes。我希望我们能从中理解其余的内容。您需要添加文件条目,然后需要更新以获得批准

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);
ThemeDisplay-ThemeDisplay=(ThemeDisplay)request.getAttribute(WebKeys.THEME\u DISPLAY);
UploadPortletRequest uploadRequest=portal.getUploadPortletRequest(请求);
File File=uploadRequest.getFile(“uploadFile”);
DLFileEntry=null;
Long-lessonId=ParamUtil.getLong(请求,“lid”);
Lesson lll=LessonLocalServiceUtil.getLesson(lessonId);
字符串lesName=URLEncoder.encode(lll.getName(themeDisplay.getLocale());
日期da=新日期();
字符串ext=FileUtil.getExtension(file.getName());
字符串dat=新的SimpleDataFormat(“yyyy-MM-dd”)。格式(da);
字符串标题=lesName+“-”+dat+“+ext;
长肖像ID=themeDisplay.getUser().get肖像ID();
byte[]imageBytes=FileUtil.getBytes(文件);
InputStream is=新的ByteArrayInputStream(imageBytes);
PortletPreferences=request.getPreferences();
字符串nameRo=uploadRequest.getParameter(“nameRo”);
String nameEn=uploadRequest.getParameter(“名称”);
DLFolder DLFolder=DLFolderLocalServiceUtil.getFolder(主题显示.getScopeGroupId(),0,“TestFolder”);
ServiceContext ServiceContext=ServiceContextFactory.getInstance(DLFileEntry.class.getName(),请求);
列表提示=DLFileEntryTypeLocalServiceUtil.getFileEntryTypes(DLUtil.getGroupId(主题显示));
fileEntry=DLFileEntryLocalServiceUtil.addFileEntry(主题显示.getUserId(),
主题显示。getScopeGroupId(),
主题显示。getScopeGroupId(),
dlFolder.getFolderId(),
file.getName(),
MimeTypesUtil.getContentType(文件),
标题
request.getParameter(“名称”),
"", 
get(0).getFileEntryTypeId(),
无效的
文件
是
file.getTotalSpace(),
服务上下文);
DLFileEntryLocalServiceUtil.updateFileEntry(
主题显示。getUserId(),
fileEntry.getFileEntryId(),
file.getName(),
MimeTypesUtil.getContentType(文件),
标题
"", 
"", 
是的,
get(0.getPrimaryKey(),
无效的
文件
是
file.getTotalSpace(),
服务上下文);
编辑: 要访问您可以使用的fileentry下载url

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>
DLFileEntry dlf=DLFileEntryLocalServiceUtil.getDLFileEntry(f.get(i).getFileEntryId());

您的参数有什么问题?@Lucky Boy,关于这些参数:ServiceContext-file inputstream您能帮我做些什么吗?确切地说,我想将图像上传到我在文档库中通过portlet创建的文件夹中。我认为对于与将图像添加到该文件夹相关的部分,我可以在我的portlet中使用“DLFileEntryLocalServiceUtil.addFileEntry()”。是这样吗?或者我的想法是错误的??????/我很确定这是我见过的最令人困惑的java格式。你的变量命名也很奇怪,但我尽量不去碰它。