您的位置:首页 > 运维架构 > Apache

Apache FileUpload上传组件API解析(待续)

2015-01-27 15:55 369 查看
Java Web开发人员可以使用FileUpload组件接收浏览器上传文件,最重要的三个类:DiskFileUpload(Class)、FileItem(Interface)、FileUploadException(Exception),它们都位于org.apache.commons.fileupload包中。

1.DIskFileUpload类(核心类,主要通过这个类与组件交互)

1.1 setSizeMax()方法

设置消息实体最大允许大小,若超出设置,抛FileUploadException异常

1.2 setSizeThreshold()方法

设置临时文件大小(Apache上传组件在分析处理上传处理数据时,需要临时保存解析出的数据),超出限制发生“java.lang.OutOfMemoryError”

1.3 setRepositoryPath()方法

设置1.2中提到的临时文件的存放路径,如果不设置存放路径,那么临时文件将被储存在"java.io.tmpdir"这个JVM环境属性所指定的目录中,tomcat 5.5.9将这个属性设置为了“<tomcat安装目录>/temp/”目录。

1.4 parseRequest()方法

解析HTTP请求的入口方法,如果请求的实体内容不是“multipart/form-data”,抛FileUploadException异常。

解析Form表单的每个字段的数据,将它们包装成独立的FileItem对象,然后加入List类型的集合对象中返回。

1.5 isMultipartContent()方法

判断请求消息的内容是否是“Multipart/form-data”类型

1.6 setHeaderEncoding()方法

设置转换时所使用的字符集编码

2.FileItem类(封装单个表单的字段元素,一个元素对应一个FileItem对象,FileItem是一个接口,实际上使用的是该接口的实现类)

说明:对于“mutipart/form-data”类型的Form表单,浏览器上传试题中的每个字段元素之间用字段分隔符分割,分隔符之间的内容称为分区,分区(1.描述头2.主体部分)

FileItem对象用了两个成员变量存储描述头和主体。当主体内容的大小小于DiskFileUpload.setSizeThreshold方法设置的临界值大小时,这个流对象关联到一片内存,主体内容将会被 保存在内存中。当主体内容的数据超过DiskFileUpload.setSizeThreshold方 法设置的临界值大小时,这个流对象关联到硬盘上的一个临时文件,主体内容将被保存到该临时文件中。临时文件的存储目录由 DiskFileUpload.setRepositoryPath方法设置,临时文件名的格式为 “upload_00000005(八位或八位以上的数
字).tmp”这种形式,FileItem类内部提供了维护临时文件名中的数值不重复的机制,以保证了临时文件名的唯一性。当应用程序将主体内容保存到一 个指定的文件中时,或者在FileItem对象被垃圾回收器回收时,或者Java虚拟机结束时,Apache文件上传组件都会尝试删除临时文件,以尽量保 证临时文件能被及时清除。

2.1 isFormField()方法

判断封装的数据是属于普通表单字段还是文件表单字段

2.2 getName()方法

获得文件上传字段中的文件名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: