文件下载是我们经常需要实现的功能。
在liferay的portlet中怎么实现文件下载呢?
以MVCPortlet为例简单说明。
1.首先在view.jsp文件中生成一个链接。
<%// URL
ResourceURL downloadURL = renderResponse.createResourceURL();
// set parameters
downloadURL.setParameter("filename", "filenamepath");
%>
<a href="<%=downloadURL.toString()%>">download file</a>
2. MVCPortlet的portlet类中添加方法
public void serveResource(ResourceRequest resourceRequest,
ResourceResponse resourceResponse) throws IOException,
PortletException {
String filename = ParamUtil.getString(resourceRequest, "filename");
String tempFile = new File("rootpath" + "/" + filename);
// download
ServletResponseUtil.sendFile(PortalUtil.getHttpServletRequest(resourceRequest), PortalUtil.getHttpServletResponse(resourceResponse), filename, FileUtil.getBytes(tempFile));
}
下载这个地方用serveResource方法比较好,如果用processAction等方法貌似有点小问题。
还是比较简单的吧!