Liferay-在模板中获取文件大小

Liferay-在模板中获取文件大小,liferay,liferay-6,filesize,liferay-velocity,Liferay,Liferay 6,Filesize,Liferay Velocity,是否可以从velocity模板中的文档库中获取文件大小 我有一个包含重复文件的内容结构和一个非常简单的模板,如下所示: #foreach($f in $file.siblings) <a href="$f.getData()">download</a> #end #foreach($file.sides中的f) #结束 $f.getType()返回值:文档库 谢谢 不幸的是,无法从Liferay注入模板的$f变量直接访问此信息。对于Liferay 6.1,$f

是否可以从velocity模板中的文档库中获取文件大小

我有一个包含重复文件的内容结构和一个非常简单的模板,如下所示:

#foreach($f in $file.siblings)
    <a href="$f.getData()">download</a>
#end
#foreach($file.sides中的f)
#结束
$f.getType()
返回值:
文档库


谢谢

不幸的是,无法从Liferay注入模板的
$f
变量直接访问此信息。对于Liferay 6.1,
$f.data
以以下形式保存指向文档的url:

/documents/[group-id]/[folder-id]/[file-name]
幸运的是,我们可以通过使用服务API来破解这个问题,并获得实际的文件,这在Velocity模板中可以通过
$serviceLocator
访问。要使此变量可用,必须通过配置以下属性在
portal-ext.properties
中启用它:

#
# Input a comma delimited list of variables which are restricted from the
# context in Velocity based Journal templates.
#
journal.template.velocity.restricted.variables=
启用此功能后,我们可以调用正确的服务,根据文档URL中的部分检索
FileEntry
对象。还有尺寸:

#set($url = $f.data)
#set($parts = $stringUtil.split($url, "/"))

#set($group_id = $getterUtil.getLong($parts.get(2)))
#set($folder_id = $getterUtil.getLong($parts.get(3)))
#set($doc_name = $parts.get(4))

#set($docService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLAppLocalService"))
#set($fileEntry = $docService.getFileEntry($group_id, $folder_id, $doc_name))

The file size is: $fileEntry.size

不幸的是,无法从Liferay注入模板中的
$f
变量直接访问此信息。对于Liferay 6.1,
$f.data
以以下形式保存指向文档的url:

/documents/[group-id]/[folder-id]/[file-name]
幸运的是,我们可以通过使用服务API来破解这个问题,并获得实际的文件,这在Velocity模板中可以通过
$serviceLocator
访问。要使此变量可用,必须通过配置以下属性在
portal-ext.properties
中启用它:

#
# Input a comma delimited list of variables which are restricted from the
# context in Velocity based Journal templates.
#
journal.template.velocity.restricted.variables=
启用此功能后,我们可以调用正确的服务,根据文档URL中的部分检索
FileEntry
对象。还有尺寸:

#set($url = $f.data)
#set($parts = $stringUtil.split($url, "/"))

#set($group_id = $getterUtil.getLong($parts.get(2)))
#set($folder_id = $getterUtil.getLong($parts.get(3)))
#set($doc_name = $parts.get(4))

#set($docService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLAppLocalService"))
#set($fileEntry = $docService.getFileEntry($group_id, $folder_id, $doc_name))

The file size is: $fileEntry.size

这是行不通的,因为你必须逃避去url,试试这个

#set($url = $httpUtil.decodeURL($ficheiro.getData(), true))
#set($parts = $stringUtil.split($url, "/"))

#set($group_id = $getterUtil.getLong($parts.get(2)))
#set($folder_id = $getterUtil.getLong($parts.get(3)))
#set($doc_name = $parts.get(4))

#set($docService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLAppLocalService"))

#set($fileEntry = $docService.getFileEntry($group_id, $folder_id, $doc_name))

The file size is: $fileEntry.size

这是行不通的,因为你必须逃避去url,试试这个

#set($url = $httpUtil.decodeURL($ficheiro.getData(), true))
#set($parts = $stringUtil.split($url, "/"))

#set($group_id = $getterUtil.getLong($parts.get(2)))
#set($folder_id = $getterUtil.getLong($parts.get(3)))
#set($doc_name = $parts.get(4))

#set($docService = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLAppLocalService"))

#set($fileEntry = $docService.getFileEntry($group_id, $folder_id, $doc_name))

The file size is: $fileEntry.size