在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
);
}
}
这不起作用 - 我不知道向DLFileEntryLocalServiceUtil.addFileEntry
提供什么参数?
答案 0 :(得分:3)
用于将文件添加到Liferay文档库
您需要一个文件夹,您可以在liferay控制面板中创建它,我的文件夹是TestFolder。您可以使用DLFolderLocalServiceUtil.getFolder搜索它。你需要dlfileentrytypes。我希望我们能从中了解其余部分。您需要添加fileentry,然后需要更新它以获得批准。
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);
编辑: 要访问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>
答案 1 :(得分:1)
您是否尝试从命令行调用此API函数? (正如方法main
所暗示的):你不能只启动JVM并调用Liferay API函数,因为还没有初始化。
您需要从Web应用程序调用API函数(尤其是本地服务) - 例如一个portlet或一个钩子 - 这通常不会发生在main方法中。
编辑:看一下被授予的javadoc,这不会给你提供除参数名称以外的许多线索,但是如果你仔细阅读这些并看到implementation,那么一些可能值得尝试/检查的事情:
userId
是用户的有效ID。groupId
和repositoryId
的值也有效 - 例如它需要是网站的ID。folderId
相同:确保它是文件夹的有效ID。对于这个例子,我们不知道你是如何想出这个价值的。bytes.length
)如果这不能解决您的问题,请告诉我们您的论点存在哪些确切问题:“我遇到了问题”并不足以提供任何有意义的帮助