一、图片显示
启动liferay或浏览liferay官方网站,查看任一图片的链接可看到如下形式的url:
http://www.liferay.com/image/journal/article?img_id=FRONT-PAGE-NEWS-FEATURES.image1&version=1.0
看到这样的url, 大概都会猜想图片数据是否存在数据库中,事实确是如此。
在web.xml中可以找到image的servlet映射
<servlet></servlet>
〈servlet〉
〈servlet-name〉ImageServlet〈/servlet-name〉
〈display-name〉ImageServlet〈/display-name〉
〈servlet-class〉com.liferay.portal.servlet.ImageServlet〈/servlet-class〉
〈load-on-startup〉5〈/load-on-startup〉
〈/servlet〉
〈servlet-mapping〉
〈servlet-name〉ImageServlet〈/servlet-name〉
〈url-pattern〉/image/*〈/url-pattern〉
〈/servlet-mapping〉
ImageServlet中的代码很简单,它通过img_id从数据表中读取图片数据,然后输出到OutputStream上,
liferay中定义了一个ImageService组件,它用来处理image的读取,更新及删除操作。
二、图片上传
通过liferay的工具类,可以很容易的实现图片的上传处理,
UploadPortletRequest uploadReq = PortalUtil.getUploadPortletRequest(req);
File file = uploadReq.getFile(name); // 上传表单控件的名称;
byte[] bytes = FileUtil.getBytes(file);
if ((bytes != null) && (bytes.length > 0)) {
String imageId = "yourimageid"; // 要小心名称重复的问题;
ImageLocalServiceUtil.updateImage(imageId, bytes);
}
保存后就能通过 /image/myModule?img_id=yourimageid 来显示图片了;
相关链接:
使用liferay中的struts+tiles来开发portlet(一)
Liferay中外部war方式整合portlet的处理流程