Portlet 也可以上传文件,它用的是apache commons-fileupload的PortletFileUpload类

也在commons-fileupload.jar 包里面

  1. public class PortletFileUpload extends FileUpload
  2. {
  3. public static final boolean isMultipartContent(ActionRequest request)
  4. {
  5. return FileUploadBase.isMultipartContent(new PortletRequestContext(request));
  6. }
  7. public PortletFileUpload()
  8. {
  9. }
  10. public PortletFileUpload(FileItemFactory fileItemFactory)
  11. {
  12. super(fileItemFactory);
  13. }
  14. public List parseRequest(ActionRequest request)
  15. throws FileUploadException
  16. {
  17. return parseRequest(new PortletRequestContext(request));
  18. }
  19. public FileItemIterator getItemIterator(ActionRequest request)
  20. throws FileUploadException, IOException
  21. {
  22. return super.getItemIterator(new PortletRequestContext(request));
  23. }
  24. }

要上传文件,官方教程给了一个例子。

上传动作位于java代码中:

  1. //创建一个PortletFileUpload的对象
  2. PortletFileUpload pfu = new PortletFileUpload();
  3. //设置可以被上传的文件的最大字节数
  4. pfu.setFileSizeMax(MAX_UPLOAD_FILE_SIZE);
  5. //校验来自Portlet的请求是否是一个文件上传请求,当前仅当ActionRequest的请求头内容类型是multipart/form-data时候才返回真
  6. if(PortletFileUpload.isMultipartContent(request)) {
  7. //如果是一个文件上传请求,那么创建一个迭代器,用于迭代所有被上传的File
  8. FileItemIterator iter = pfu.getItemIterator(request);
  9. while (iter.hasNext()) {
  10. //每一个FileItemStream都打开一个文件流用于操作上传的某个File
  11. FileItemStream item = iter.next();
  12. InputStream stream = item.openStream();
  13. byte[] buffer = new byte[1024];
  14. while (true) {
  15. if (!item.isFormField()) {
  16. byte[] bytes = new byte[buffer];
  17. stream.read(bytes);
  18. }
  19. }
  20. }
  21. }

然后在页面上,我们必须创建一个表单,并且设置其类型为multipart/form-data

  1. <form name="uploadTocForm" method="post"
  2. action="${uploadTocActionUrl}" enctype="multipart/form-data">

然后在form内部,因为可以多文件上传,所以每一个上传控件都应该写为:

  1. <input type="file" name="tocFile"/>

它等价于代码中的FileItem

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

(Portal 开发读书笔记)PortletFileUpload相关推荐

  1. java portlet,(Portal 开发读书笔记)Portlet和Servlet的异同

    Portlet和Servlet的相同点: (1)都是基于java技术的web组件 (2)都是被专门的容器管理 (3)都是生成动态内容 (4)生命周期都被容器管理 (5)都是与web客户端通过reque ...

  2. 实战 | 尝鲜 Svelte 前端框架,开发读书笔记

    提到前端开发框架,我相信大家第一时间想到的就是 Vue.React 和 Angular 三大主流.毕竟它们各个都是 GitHub 上 10w+ star 的知名项目,每个前端工程师至少要学习其中一个框 ...

  3. 尝鲜 Svelte 前端框架,开发读书笔记

    作者鱼皮 来源 | 鱼皮客栈(id:coder_yupi) 提到前端开发框架,我相信大家第一时间想到的就是 Vue.React 和 Angular 三大主流.毕竟它们各个都是 GitHub 上 10w ...

  4. Android驱动开发读书笔记六

    第六章 Linux 驱动的工作和访问方式是 Linux 的亮点之一,Linux 系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中,由于大多数Linux驱动都有与 ...

  5. 第二章:Android系统与嵌入式开发读书笔记

    本章我们主要学习了Android与传统嵌入式Linux系统:嵌入式系统概述,组成,开发概述:Android系统概述和架构. 嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生 ...

  6. ffmpeg基础库编程开发 读书笔记

    第一章 1.6 容器和协议 1. 媒体文件和编码的区别 文件是既包括视频又包括音频.甚至还带有脚本的一个集合,也可以叫做容器: 文件当中的视频和音频的压缩算法才是具体的编码. 2. 两大标准指定组织 ...

  7. Android深度探索(卷1)HAL与驱动开发 读书笔记(第四章)

    第四章  源代码的下载和编译 本章主要介绍使用Git下载两套源代码.一套是Android 源代码,另一套是Linux 内核源代码.主要介绍如何下载和编译Android源代码和Linux内核源代码. 4 ...

  8. Django企业开发读书笔记(及官方文档学习笔记) 老男孩2019Go语言视频学习

    目标:深入理解Django以及web开发深入知识,掌握Gin ,Go micro 框架 ,Kafka ,Zookeeper 为kubernetes Istio 做微服务,服务网格做铺垫 实现Pytho ...

  9. 《敏捷软件开发:原则、模式与实践》--敏捷开发读书笔记

    敏捷开发过程中必须遵循的原则 1.我们最优先要做的是通过尽早的.持续的交付有价值的软件来使客户满意. 初期交付的系统中所包含的功能越少,最终交付的系统的质量就越高.--构建高质量产品. 2.即使到了开 ...

最新文章

  1. php使用strstr函数 ,判断字符串A中是否含有字符串B
  2. 树莓派4视频输出接口_树莓派第四代来啦!4G内存、支持双屏4K输出和H265硬解
  3. 计算长方体体积编程_如何求N个球体在空间中所占的体积?
  4. 金山办公上市,雷军心愿了却!
  5. ROS防止外网DDOS的最有效方法
  6. Windows Phone开发(12):认识一下独具个性的磁贴 转:http://blog.csdn.net/tcjiaan/article/details/7313866...
  7. 【C++后台开发面经】面试总结第七波:面试智力题
  8. 关于电感数字传感器的一些问题
  9. 华科计算机学院硕士武汉理工推免,武汉理工大学2021届保研率14.9%,主要保研本校、武大、华科...
  10. 关于笔记本安装Deepin 或者ubuntu操作系统,无法进入界面。
  11. 数据库连接中的等值连接、自然连接、外连接、左外连接和右外连接
  12. Pyecharts库及其与Django的结合使用
  13. vue3实现tags
  14. DDOS攻击器常见的三种方式
  15. html,css,js 实现树形菜单栏
  16. long journey android,人类一败涂地感染模式mod
  17. 接口测试中Post方法怎么测?
  18. CSSJS--用JS让文字闪烁起来
  19. Leetcode-数据结构-350. 两个数组的交集 II
  20. 011-Java代理模式

热门文章

  1. Golang的协程池设计
  2. 一款猥琐的PHP后门分析
  3. Datepicker-for-Bootstrap 日期选择插件
  4. 记一次SVN误删除操作和Tomcat版本与操作系统不兼容 问题分析及解决的过程
  5. 教你如何做出想要的PHPDocker镜像
  6. Oauth2协议详解
  7. G1垃圾收集器之SATB
  8. LVS+Keepalived实现高可用负载均衡
  9. 分布式理论-CAP定理
  10. hadoop 自定义分区