开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Liferay Portlet中的文件上传

简介:
+关注继续查看

我们已经知道了许许多多种类的处理文件上传的代码,比较典型的比如Apache大名鼎鼎的FileUpload等,当然了, Liferay为我们都考虑过了,我们可以用Liferay自带的上传文件的API来处理文件上传问题,这个核心接口就是com.liferay.portal.kernel.upload.UploadPortletRequest接口。

 

举个最简单的例子,比如我们要在Portlet页面上传一个文件到Portlet中,然后Portlet吧这个文件移动到别的位置:

那么,在页面上(比如config.jsp)中,我们必须用一个<input type="file">来表示一个文件上传控件:


  1. <td> 
  2.  
  3.      <label><liferay-ui:message key="rslaunch.zipfile" /></label> 
  4.  
  5.      <div> 
  6.  
  7.              <input class="lfr-input-text" name="Zip" type="file" /> 
  8.  
  9.              <input name="<portlet:namespace /><%=Constants.CMD %>" type="hidden" value="<%=Constants.UPDATE%>" /> 
  10.  
  11.       </div> 
  12.  
  13.  </td> 

 

然后,在我们java代码中,我们利用UploadPortletRequest接口来处理被上传的文件:


  1. /** 
  2.   * Method used to upload the file on the target by reading the server details from the properties 
  3.   * @param actionRequest 
  4.   * @throws Exception 
  5.   */ 
  6.          public static void uploadFileToDest(ActionRequest actionRequest) throws Exception{ 
  7.   
  8.                  if(LOGGER.isDebugEnabled()){ 
  9.                     LOGGER.debug("FileOperationHelper : uploadFileToDest()"); 
  10.               } 
  11.                  PortletPreferences preferences = PortletHelper.getPortletPreferences(actionRequest); 
  12.         String portletInstanceId = preferences.getValue(RS_LAUNCH_PORTLET_PREFERENCE_PORTLET_ID, StringPool.DOUBLE_QUOTE); 
  13.   
  14.                  String fileOriginFolder = configUtil.getProperty(RS_LAUNCH_ZIP_ORIGIN_FOLDER); 
  15.         UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest); 
  16.         String fileName = uploadRequest.getFileName(RS_LAUNCH_CONFIG_PAGE_FORM_ZIP_INPUT_NAME); 
  17.         File tempFile = uploadRequest.getFile(RS_LAUNCH_CONFIG_PAGE_FORM_ZIP_INPUT_NAME); 
  18.    ...

从这里代码可以看出来,我们在第15行获取一个UploadPortletrequest对象,然后用它的AP就可以正确的获取文件名字(16行)和获取文件对象了,接下来对于这个文件的操作就是普通的I/O操作,我们这里就略去了。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/989530,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
typescript59-泛型工具类型(partial )
typescript59-泛型工具类型(partial )
17 0
演示:excel通讯录批量快速转换成vcard的方法
步骤一:我们在电脑上excel表格里有通讯录(人铭和号码各自一列),然后你需要打开软件工具,金芝号码提取导入助手,那么就可以批量把 通讯录快速转换成vcard。具体怎么做呢?步骤二:你把你的excel表格打开,然后复制好表格里的人铭和号码,去打开软件选他的第三个功能“通讯录导入”,把刚才复制好的材料分别粘贴进来软件,点下面的“生成通讯录”,那么就会自动出来一个vcard格式的文件,你把它保存到电脑桌面去。步骤三:不过这不是我们最后的目的,做这个肯定是想把excel通讯录批量导入手机联系人里面的。所以还需要一步,就是把这个vcard文件发送发给你的手机,你在手机上打开这个vcf文件,就可
163 0
文件快速删除工具, 解决你的node_modules
文件快速删除工具, 解决你的node_modules
75 0
文件快速删除工具, 解决你的node_modules
摘要:   还在为删除文件慢烦恼吗?强大工具dlf来帮助你。作为一名前端开发,最常见的就是node_modules,如果dependencies很多,osx系统删除还好,Windows用户就麻烦了。本文分享一块命令行文件及文件夹删除工具。
1254 0
一个助Hadoop集群数据快速上云工具
当前业界有很多公司是以Hadoop技术构建数据中心,所以本文将探讨如何快速的将Hadoop文件系统(HDFS)上的数据迁移到云上。
5166 0
《Swift入门经典(第2版)》——2.4 小结
本章介绍了关于Swift中基本数据类型的许多知识,包括Int、Double、Bool和String。另外,还讨论了每种数据类型存储的是什么类型的数据,怎样利用正确的数据初始化它们,甚至怎样通过在Xcode中按住Command键并单击数据类型的关键字,检查数据类型属性和方法的完整列表。
1118 0
nslookup工具的使用方法
配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了。不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常。
1317 0
+关注
20376
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载