2012-08-24 3 views
1

속도 라이브러리에서 문서 라이브러리의 파일 크기를 구할 수 있습니까? document_library :Liferay - 템플릿에서 파일 크기 얻기

$f.getType()
#foreach($f in $file.siblings) 
    <a href="$f.getData()">download</a> 
#end 

는 값을 반환

나는 다음과 같은 반복적 인 파일과 매우 간단한 템플릿과 콘텐츠 구조를 가지고있다.

감사합니다.

답변

1

Liferay가 템플릿에 삽입 한 변수 $f에서이 정보에 직접 액세스 할 수 없습니다. 다행히

/documents/[group-id]/[folder-id]/[file-name] 

, 우리는이를 통해 우리의 방법을 해킹에 액세스 할 수있는 서비스 API를 사용하여 실제 파일의 보류를 얻을 수 있습니다을 Liferay 6.1의 경우, $f.data 다음과 같은 형태로 문서에 URL을 보유 $serviceLocator 덕분에 속도 템플릿. 우리는이 활성화되면

# 
# Input a comma delimited list of variables which are restricted from the 
# context in Velocity based Journal templates. 
# 
journal.template.velocity.restricted.variables= 

, 우리는 문서의 부에 대하여 FileEntry 개체를 검색 할 수있는 권한 서비스를 호출 할 수 있습니다 :이 변수를 사용할 수 있으려면 다음과 같은 속성을 구성하여 portal-ext.properties에서 활성화해야합니다 URL.

#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 
0

이 시도 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