Fileupload:

FileUpload 是 Apache commons下面的一个子项目,用来实现java环境下面的文件上传功能,与常见的SmartUpload齐名。

组件:

组件FileUpload依赖于Commons IO组件,因此在继续之前,要确保在你的工程classpath中有描述页中提到的相应版本。(这里FileUpload版本为:commons- fileupload-1.2.1,Commons IO版本为:commons-io-1.4);

即在创建工程项目时,你需要导入必要的包:

Apache-fileupload.jar – 文件上传核心包。

Apache-commons-io.jar – 这个包是fileupload的依赖包。同时又是一个工具包。

当有了这几个包,才能拥有使用组件的必要环境。

其中包中核心的类有:

DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个具类。

ServletFileUpload  - 文件上传的核心类,此类接收request,并解析reqeust

ServletFileUpload.parseRequest(request);  --List   解析request

工作原理:

上传文件的要求包括一个基于RFC 1867编码的选项列表清单;组件FileUpload可以解析这个上传的请求,并给你的应用程序提供一份独立上传的项目清单。

每一个文件项目都有一些属性并能用inputStream访问其数据

数据来源的表单域不同处理项目的方式也会不同,FileItem接口可以提供处理这一问题的方法。

组件FileUpload使用FileItemFactory工厂创建新的文件项目。这个给了组件FileUpload很大的灵活性。这个工厂拥有怎样创建项目的最终控制权。工厂执行过程中上传项目文件的临时数据可以存储在内存中或硬盘上。这个依赖于上传项目的大小。不过这种方法可以在你的应用程序中自定义。

解析:

在实现上传项目之前,当然需要解析这个请求。确保这个请求的确是一个正确的上传文件,组件FileUpload为了使这个判断简单,提供了一个静态的方法去做这个事情。

// 检测我们是否一个文件上传的请求

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

实例

最简单的使用情况如下:

上传项目只要足够小,就应该将其保存在内存中。

较大的项目应该被写入到硬盘的临时文件中。

应该避免有非常大的上传项目。

设置项目默认的在内存中所占的空间,限制最大的上传请求,并设定临时文件 的位置。

处理这种情况下的请求非常的简单:

// 创建磁盘工厂

FileItemFactory factory = new DiskFileItemFactory();

// 创建处理工具

ServletFileUpload upload = new ServletFileUpload(factory);

// 解析

List items = upload.parseRequest(request);

这就是我们真正需要的全部代码。

处理的结果是生成了一个文件项目列表,每个文件项目实现一个FileItem接口。下面将介绍如何处理这些项目。

控制:

如果你的使用情况和上面描述的例子很接近,但是你需要在一点更多的控制限定文件的大小或临时文件的存放位置。你可以很容易的自定义上传实例或文件项目或两者的行为。下面例子展示了几种配置选项:

// 创建磁盘工厂

DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置参数

factory.setSizeThreshold(yourMaxMemorySize);

factory.setRepository(yourTempDirectory);

// 创建处理工具

ServletFileUpload upload = new ServletFileUpload(factory);

// 设置最大允许的尺寸

upload.setSizeMax(yourMaxRequestSize);

// 解析

List items = upload.parseRequest(request);

当然,每一个配置处理方法都是独立于其他方法的,但是如果你想一次性配置这个工厂,你可以使用工厂的另一个重载方法。像这样:

DiskFileItemFactory factory = new DiskFileItemFactory( yourMaxMemorySize,     yourTempDirectory);

如果你还需要更多的控制请求的解析,比如存储项目到其它地方(如:数据库),你将需要看看FileUpload自定义。

java fileupload_java组件fileupload相关推荐

  1. java swing 组件技术(上)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次写自己的博客,明知道写得很水,还是努力去写了,希望踏出第一步之后,能有着更好的发展.这几天看了一些资料,总结了一下自己所 ...

  2. 在 Java EE 组件中使用 Camel Routes

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:你可以通过集成 Camel 和 WildFly 应用服务器(使用 WildFly-Camel 子系统)在 Java EE ...

  3. java ee各类组件_在Java EE组件中使用骆驼路线

    java ee各类组件 从现在开始我一直在与Camel合作,我真的很喜欢它的简单性. 在Java EE之上使用它一直是一个挑战,我最近发表了一篇关于如何做到这一点的演讲,而在Java EE中引导Cam ...

  4. 在Java EE组件中使用骆驼路线

    从现在开始我一直在与Camel合作,我真的很喜欢它的简单性. 在Java EE之上始终使用它一直是一个挑战,而我最近发表的有关如何做到这一点的演讲之一以及Java EE中引导Camel的不同方法实际上 ...

  5. java组件_三个必不可少的Java平台组件:什么是JVM,JDK,JRE?有啥区别?

    刚接触Java的开发人员经常想知道Java虚拟机,Java开发工具包和Java运行时环境与众不同的地方.他们也很好奇这三个Java平台组件如何在Java应用程序中一起工作.最后,开发人员需要知道他们将 ...

  6. Java同步组件之Condition,FutureTask

    Java同步组件概况 CountDownLatch : 是闭锁,通过一个计数来保证线程是否一直阻塞 Semaphore: 控制同一时间,并发线程数量 CyclicBarrier:字面意思是回环栅栏,通 ...

  7. Java同步组件之CyclicBarrier,ReentrantLock

    文章目录 Java同步组件概况 `CyclicBarrier`介绍 与`CountDownLatch`比较 相同点 不同点 `CountDownLatch`和`CyclicBarrier`的场景比较 ...

  8. Java同步组件之CountDownLatch,Semaphore

    Java同步组件概况 CountDownLatch : 是闭锁,通过一个计数来保证线程是否一直阻塞 Semaphore: 控制同一时间,并发线程数量 CyclicBarrier:字面意思是回环栅栏,通 ...

  9. java ee组件的类型_CDI(Weld)高级7JavaEE环境组件资源

    1. Defining a resource CDI规范使用术语资源是指,一般地,以下列任何一种类型的对象,在Java EE组件环境可能是可用的: JDBC Datasources, JMS Queu ...

  10. java上传组件_java上传组件FileUpload

    如果表单中有文件要上传,也就是有 就需要在form标签中添加enctype="multipart/form-data"属性 如果添加此属性,在操作 页面servlet中,用requ ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(七):插件管理类简介
  2. ​炸了!程序员现在没有这点技能都还不能就业了?
  3. 访问云服务器储存的mp4_服务器如何存储视频文件格式
  4. 向seaborn传递matplotlib绘图参数,精细地控制seaborn输出图形
  5. Android开发之shape自定义ProgressBar进度条样式
  6. 关系型数据库的分片原则
  7. C++ —— C++程序编译的四个过程
  8. Java OOM异常原因及解决方案
  9. Android WebView JavaScript交互
  10. Quartz的集群模式和单机模式共存-让一个非集群的Quartz与集群节点并行着运行
  11. matlab2c使用c++实现matlab函数系列教程-acos函数
  12. SharePoint 2010--为WebPart创建自定义属性
  13. ROS通过串口,读写STM32和HC-SR04超声波测距信息
  14. 中间件——activityMQ
  15. STM32硬件CRC计算CRC8
  16. matlab cholesky分解函数,matlab中矩阵LDLT分解与Cholesky分解
  17. 《未来行业前景必看》大数据未来的发展趋势!
  18. 步态分析——信度以及效度
  19. 悦读 | 人生十论. 钱穆
  20. 如何打开.exe文件

热门文章

  1. 【MQTT】MQTT测试工具mqttfx和国内MQTT X工具下载
  2. 仿映客、花椒手机移动视频直播系统源码
  3. SpringBoot整合高德地图 地理编码\逆地理编码
  4. 医学知识图谱构建技术与研究进展
  5. NideShop项目的安装部署教程
  6. 华三H3C交换机如何配置和使用telnet远程登录设备
  7. 工行u盾显示316_企业用户,插U盾点击U盾登录后,显示“无法显示该网页”
  8. [JZOJ3296] 【SDOI2013】刺客信条
  9. C语言网络编程——基础
  10. 怎么打小广告html,【制作】7个技巧教你如何完成一条低成本广告制作