(Portal 开发读书笔记)PortletFileUpload
Portlet 也可以上传文件,它用的是apache commons-fileupload的PortletFileUpload类
也在commons-fileupload.jar 包里面
- public class PortletFileUpload extends FileUpload
- {
- public static final boolean isMultipartContent(ActionRequest request)
- {
- return FileUploadBase.isMultipartContent(new PortletRequestContext(request));
- }
- public PortletFileUpload()
- {
- }
- public PortletFileUpload(FileItemFactory fileItemFactory)
- {
- super(fileItemFactory);
- }
- public List parseRequest(ActionRequest request)
- throws FileUploadException
- {
- return parseRequest(new PortletRequestContext(request));
- }
- public FileItemIterator getItemIterator(ActionRequest request)
- throws FileUploadException, IOException
- {
- return super.getItemIterator(new PortletRequestContext(request));
- }
- }
要上传文件,官方教程给了一个例子。
上传动作位于java代码中:
- //创建一个PortletFileUpload的对象
- PortletFileUpload pfu = new PortletFileUpload();
- //设置可以被上传的文件的最大字节数
- pfu.setFileSizeMax(MAX_UPLOAD_FILE_SIZE);
- //校验来自Portlet的请求是否是一个文件上传请求,当前仅当ActionRequest的请求头内容类型是multipart/form-data时候才返回真
- if(PortletFileUpload.isMultipartContent(request)) {
- //如果是一个文件上传请求,那么创建一个迭代器,用于迭代所有被上传的File
- FileItemIterator iter = pfu.getItemIterator(request);
- while (iter.hasNext()) {
- //每一个FileItemStream都打开一个文件流用于操作上传的某个File
- FileItemStream item = iter.next();
- InputStream stream = item.openStream();
- byte[] buffer = new byte[1024];
- while (true) {
- if (!item.isFormField()) {
- byte[] bytes = new byte[buffer];
- stream.read(bytes);
- }
- }
- }
- }
然后在页面上,我们必须创建一个表单,并且设置其类型为multipart/form-data
- <form name="uploadTocForm" method="post"
- action="${uploadTocActionUrl}" enctype="multipart/form-data">
然后在form内部,因为可以多文件上传,所以每一个上传控件都应该写为:
- <input type="file" name="tocFile"/>
它等价于代码中的FileItem
(Portal 开发读书笔记)PortletFileUpload相关推荐
- java portlet,(Portal 开发读书笔记)Portlet和Servlet的异同
Portlet和Servlet的相同点: (1)都是基于java技术的web组件 (2)都是被专门的容器管理 (3)都是生成动态内容 (4)生命周期都被容器管理 (5)都是与web客户端通过reque ...
- 实战 | 尝鲜 Svelte 前端框架,开发读书笔记
提到前端开发框架,我相信大家第一时间想到的就是 Vue.React 和 Angular 三大主流.毕竟它们各个都是 GitHub 上 10w+ star 的知名项目,每个前端工程师至少要学习其中一个框 ...
- 尝鲜 Svelte 前端框架,开发读书笔记
作者鱼皮 来源 | 鱼皮客栈(id:coder_yupi) 提到前端开发框架,我相信大家第一时间想到的就是 Vue.React 和 Angular 三大主流.毕竟它们各个都是 GitHub 上 10w ...
- Android驱动开发读书笔记六
第六章 Linux 驱动的工作和访问方式是 Linux 的亮点之一,Linux 系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中,由于大多数Linux驱动都有与 ...
- 第二章:Android系统与嵌入式开发读书笔记
本章我们主要学习了Android与传统嵌入式Linux系统:嵌入式系统概述,组成,开发概述:Android系统概述和架构. 嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生 ...
- ffmpeg基础库编程开发 读书笔记
第一章 1.6 容器和协议 1. 媒体文件和编码的区别 文件是既包括视频又包括音频.甚至还带有脚本的一个集合,也可以叫做容器: 文件当中的视频和音频的压缩算法才是具体的编码. 2. 两大标准指定组织 ...
- Android深度探索(卷1)HAL与驱动开发 读书笔记(第四章)
第四章 源代码的下载和编译 本章主要介绍使用Git下载两套源代码.一套是Android 源代码,另一套是Linux 内核源代码.主要介绍如何下载和编译Android源代码和Linux内核源代码. 4 ...
- Django企业开发读书笔记(及官方文档学习笔记) 老男孩2019Go语言视频学习
目标:深入理解Django以及web开发深入知识,掌握Gin ,Go micro 框架 ,Kafka ,Zookeeper 为kubernetes Istio 做微服务,服务网格做铺垫 实现Pytho ...
- 《敏捷软件开发:原则、模式与实践》--敏捷开发读书笔记
敏捷开发过程中必须遵循的原则 1.我们最优先要做的是通过尽早的.持续的交付有价值的软件来使客户满意. 初期交付的系统中所包含的功能越少,最终交付的系统的质量就越高.--构建高质量产品. 2.即使到了开 ...
最新文章
- php使用strstr函数 ,判断字符串A中是否含有字符串B
- 树莓派4视频输出接口_树莓派第四代来啦!4G内存、支持双屏4K输出和H265硬解
- 计算长方体体积编程_如何求N个球体在空间中所占的体积?
- 金山办公上市,雷军心愿了却!
- ROS防止外网DDOS的最有效方法
- Windows Phone开发(12):认识一下独具个性的磁贴 转:http://blog.csdn.net/tcjiaan/article/details/7313866...
- 【C++后台开发面经】面试总结第七波:面试智力题
- 关于电感数字传感器的一些问题
- 华科计算机学院硕士武汉理工推免,武汉理工大学2021届保研率14.9%,主要保研本校、武大、华科...
- 关于笔记本安装Deepin 或者ubuntu操作系统,无法进入界面。
- 数据库连接中的等值连接、自然连接、外连接、左外连接和右外连接
- Pyecharts库及其与Django的结合使用
- vue3实现tags
- DDOS攻击器常见的三种方式
- html,css,js 实现树形菜单栏
- long journey android,人类一败涂地感染模式mod
- 接口测试中Post方法怎么测?
- CSSJS--用JS让文字闪烁起来
- Leetcode-数据结构-350. 两个数组的交集 II
- 011-Java代理模式