一、在portlet一般上传文件
public void uploadFile(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
UploadPortletRequest upload = com.liferay.portal.util.PortalUtil.getUploadPortletRequest(actionRequest);
String fileName = upload.getFileName("file");
String contentType = upload.getContentType("file");
long size = upload.getSize("file");
File tempFile = upload.getFile("file");
InputStream is = upload.getFileAsStream("file");
if (Validator.isNotNull(fileName)) {
Date today = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
String formattedDate = formatter.format(today);
String dirPath = actionRequest.getPortletSession().getPortletContext().getRealPath("/") + File.separator + "uploadfiles" + File.separator
+ formattedDate + File.separator;
File NewfileDir = new File(dirPath);
if (!NewfileDir.exists()) {
NewfileDir.mkdir();
}
FileUtil.copyFile(tempFile, new File(dirPath + fileName));
FileUtil.delete(tempFile);
SessionMessages.add(actionRequest, "success");
}
}
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ page import ="javax.portlet.PortletURL" %>
<portlet:actionURL name="uploadFile" var="uploadFileURL"/>
<liferay-ui:success key="success" message="upload-file-successfully"></liferay-ui:success>
<aui:form name="fm" action="<%=uploadFileURL.toString() %>" method="post" enctype="multipart/form-data">
<aui:fieldset>
<aui:input name="file" size="45" type="file"/>
<aui:button-row>
<aui:button type="submit"/>
</aui:button-row>
</aui:fieldset>
</aui:form>
二、将获取到的文件上传到Liferay的文档库
public void uploadFile(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
UploadPortletRequest upload = com.liferay.portal.util.PortalUtil.getUploadPortletRequest(actionRequest);
String fileName = upload.getFileName("file");
String contentType = upload.getContentType("file");
long size = upload.getSize("file");
File tempFile = upload.getFile("file");
InputStream is = upload.getFileAsStream("file");
if (Validator.isNotNull(fileName)) {
addLiferayStore(actionRequest, tempFile);
SessionMessages.add(actionRequest, "success");
}
}
public void addLiferayStore(ActionRequest actionRequest, File f) throws PortalException, SystemException, IOException {
String mimeType = MimeTypesUtil.getContentType(f);
long userId = PortalUtil.getUserId(actionRequest);
Long groupId = PortalUtil.getScopeGroupId(actionRequest);
DLAppLocalServiceUtil.addFileEntry(userId, groupId, DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_BASIC_DOCUMENT, f.getName(), mimeType,
f.getName(), f.getName(), "", FileUtil.getBytes(f), ServiceContextFactory.getInstance(DLFileEntry.class.getName(), actionRequest));
}
在portlet中获取到我们上传的文件,只算是完成了第一步。取到了上传的文件,怎么传到Liferay的文件库中呢?使用如下的接口
DLAppLocalServiceUtil.addFileEntry(long userId, long repositoryId, long folderId,java.lang.String sourceFileName, java.lang.String mimeType,java.lang.String title, java.lang.String description,java.lang.String changeLog, byte[] bytes,com.liferay.portal.service.ServiceContext serviceContext)
此接口的参数逐个说明:
long userId:上传此文件的用户id
long repositoryId:仓库存储ID,此ID一般为groupid
long folderId:文件夹ID,可以自己创建,或使用liferay默认的如:DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_BASIC_DOCUMENT等,最好是自己根据上传资源的情况分类,如新闻的存到新闻文件,博客的存成博客文件等
String sourceFileName:上传文件的源文件名
String mimeType:算是文件类型,可以使用mimeType = MimeTypesUtil.getContentType(fileName);根据文件名获取。
String title:文件标题,这个与SourceFileName的区别在于,此title是最终显示在系统上的,可以由用户输入,源文件名称是上传获取的文件名称,不能手动改变。可以留空。
String description:关于此文件的描述,可以留空。
String changeLog:文件修改日志,可以留空。
byte[] bytes:文件的正文件,字节数组。
ServiceContext serviceContext:此类可以通过以下代码
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(), request);
获取。此对象里面包含了一些环境信息,如groupid,companyid,权限,门户路径,当前语言,userId等信息。
在实际应用中可以自己将上面的这个接口再做一层封装,作为一个公共的文件上传接口,以供其他需要文件上传的地方调用,具体的请自行封装,这里就不再帖我封装的代码。
2、获取文件路径
上面的文件上传之后返回的是一个FileEntry的对象,如果获取到上传的文件的路径呢,方法如下,可以定义一个方法,用来返回文件路径,此方法对图片、各式文件都是有效。
public static String getFilePath(FileEntry fileEntry) {
if (null!=fileEntry) {
return "/documents/" + fileEntry.getRepositoryId() + "/" + fileEntry.getFolderId() + "/"
+ HttpUtil.encodeURL(HtmlUtil.unescape(fileEntry.getTitle()), true) + "/" + fileEntry.getUuid();
}else {
//如有需要,此处可以定义一个默认图片
return StringPool.BLANK;
}
或者下面的这个方法,下面的这个更简便一些
public static String getFilePath(FileEntry fileEntry) {
if (null!=fileEntry) {
return "/documents/" + fileEntry.getRepositoryId() + "/" + fileEntry.getUuid();
}else {
//如有需要,此处可以定义一个默认图片
return StringPool.BLANK;
}
有时候如果文件是一个图片,上传的图片可以很大,如何获取一个缩略图呢?如下:
public static String getSmallImagePath(FileEntry fileEntry){
String path = getFilePath(fileEntry);
return path+"?imageThumbnail=1";
}
目前有还有一个问题,就是传到媒体库中的文件,被重命名了,解决不了,谁有办法给我留言?谢谢
分享到:
相关推荐
Liferay多文件上传与下载实例,前端包含多文件上传JS,可以动态追加文件,删除文件,还有文件类型与大小验证JS。后端可以批文件上传。 下载可以实现弹出页另存为。避免了Liferay自身下载PDF和图片时在当前页面打开的...
liferay->permissions.xml文件说明
portlet下开发的基于liferay的上传下载功能,原创可用
通过ActionURL部署流程文件,实现Activiti的模板后台管理和Liferay的集成。
描述了liferay的数据库表结构以及关联关系 示例: 社区、组织、地区、用户组、用户与角色之间的关系 1、表Groups_Roles 主要功能:存储社区与角色的关系; 存储组织与角色的关系; 存储地区与角色的关系; 存储用户...
Liferay Portal Liferay IDE
liferay是一个现成的,即开即用的,功能完备的门户网站Liferay Portal,是一个完美的桌面协同办公组合,完全为企业和机构设计
liferay开发文档集合,共7个
7z压缩 三合一LifeRay资料: 1、LifeRay开发参考手册(温兵) 2、LifeRay二次开发指南 3、LifeRay4.3中文开发指南
liferay sdk文件。
Liferay中的AUI框架,官方叫做Alloy,是一个UI超框架,能为浏览器的三方面,结构,风格和表现建立网络应用提供连续的简单的API。 它融合了三种设计语言:HTML, CSS 和 JAVA。 准确来说AUI是Liferay在YUI的基础上...
liferay portal 开发指南liferay portal 开发指南liferay portal 开发指南liferay portal 开发指南
liferay学习 liferay页面 Noname2.jsp
liferay 超级学习文档 liferay 框架 java hibernate liferay 不用多说
打开Liferay IDE,Window-->Preferences-->Server-->Runtime Environment,点击右边Add…,在弹出的服务器选择里面选择Liferay,Inc-->Liferay v6.1 CE (Tomcat 7),请打“Create a new location server”打上勾。...
详细的document_llibrary流程跟踪,分析上传下载实现原理
自行翻译的LIFERAY官方帮助文档 第六章
Liferay Themes[1].pdf Liferay+CMS系统培训.ppt Liferay+Portal+数据库介绍+.doc Liferay+权限管理.doc liferay-portal-5-2-systems-development-sample-chapter-5-managing-pages[1].pdf ...
Liferay Web内容管理指南Liferay
liferay 二次开文档