2024年4月26日发(作者:)

Commons-fileupload工具的API与开发实例解析(一)

2008-04-22 17:18

文件上传组件的应用与编写

在许多Web站点应用中都需要为用户提供通过浏览器上传文档资料的功能,例如,上传邮件附

件、个人相片、共享资料等。对文件上传功能,在

浏览器端提供了较好的支持,只要将FORM表单的enctype属性设置为“multipart/form-data”

即可;但在Web服务器端如何获取浏览器上传的文

件,需要进行复杂的编程处理。为了简化和帮助Web开发人员接收浏览器上传的文件,一些公

司和组织专门开发了文件上传组件。本章将详细介

绍如何使用Apache文件上传组件,以及分析该组件源程序的设计思路和实现方法。

1.1 准备实验环境

按下面的步骤为本章的例子程序建立运行环境:

(1)在Tomcat 5.5.12的webapps目录中创建一个名为fileupload的子目

录,并在fileupload目录中创建一个名为

的网页文件,在该文件中写上“这是页面的原始内容!”这几个字符。

(2)在webappsfileupload目录中创建一个名为WEB-INF的子目录,在

WEB-INF目录中创建一个名为classes的子目录和一个

文件,文件内容如下:

(3)要使用Apache文件上传组件,首先需要安装Apache文件上传组件包。在

目录>webappsfileuploadWEB-INF目录中创建一个

名为lib的子目录,然后从网址/commons/fileupload下载到Apache

组件的二进制发行包,在本书的附带带光盘中也

提供了该组件的二进制发行包,文件名为。从

压缩包中解压出commons-fileupload

-文件,将它放置进webappsfileuploadWEB-INFlib目录中,

就完成了Apache文件上传组件的安装。

(4)在webappsfileupload目录中创建一个名为src的子目录,src目录

用于放置本章编写的Java源程序。为了便于对

Servlet源文件进行编译,在src目录中编写一个批处理文件,如例程1-1所示。

例程1-1

set PATH=C:jdk1.5.0_01bin;%path%

set

CLASSPATH=C:;C:tomcat-5.5.12webapps

;%CLASSPATH%

javac -d ..WEB-INFclasses %1

pause

在批处理文件中要注意将文件的路径加入到

CLASSPATH环境变量中和确保编译后生成的class文件存放

webappsfileuploadWEB-INFclasses目录中,上面的CLASSPATH

环境变量的设置值由于排版原因进行了换行,实际上不

应该有换行。接着在src目录中为文件创建一个快捷方式,以后只要在Windows

资源管理器窗口中将Java源文件拖动到

文件的快捷方式上,就可以完成Java源程序的编译了。之所以要创建文件的快捷

方式,是因为直接将Java源程序拖动到

批处理文件时,批处理文件内编写的相对路径不被支持。创建完的

fileupload目录中的文件结构如图1.1所示。

图1.1

(4)启动Tomcat,在本地计算机的浏览器地址栏中输入如下地址:

localhost:8080/fileupload/

验证浏览器能够成功到该网页文档。如果浏览器无法访问到该网页文档,请检查前面的操作步骤

和改正问题,直到浏览器能够成功到该网页文

档为止。

(5)为了让/fileupload这个WEB应用程序能自动重新装载发生了修改的Servlet程序,需要修

改Tomcat的文件,在该文件的

素中增加如下一个子元素:

保存文件后,重新启动Tomcat。

1.2 Apache文件上传组件的应用

Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类

共同组成,但是,对于使用该组件来编写文件上传

功能的Java Web开发人员来说,只需要了解和使用其中的三个类:DiskFileUpload、FileItem

和FileUploadException。这三个类全部位于

load包中。

1.2.1查看API文档

在准备实验环境时获得的文件的解压缩目录中可以看到一个docs

的子目录,其中包含了Apache文件上传组件中的

各个API类的帮助文档,从这个文档中可以了解到各个API类的使用帮助信息。打开文件上传

组件API帮助文档中的页面,在左侧分栏

窗口页面中列出了文件上传组件中的各个API类的名称,在右侧分栏窗口页面的底部列出了一

段示例代码,如图1.2所示。

图1.2

读者不需要逐个去阅读图1.2中列出的各个API类的帮助文档,而应该以图1.2中的示例代码为

线索,以其中所使用到的类为入口点,按图索骥地

进行阅读,对于示例代码中调用到的各个API类的方法则应重点掌握。

1.2.2 DiskFileUpload类

DiskFileUpload类是Apache文件上传组件的核心类,应用程序开发人员通过这个类来与

Apache文件上传组件进行交互。下面介绍

DiskFileUpload类中的几个常用的重要方法。

1.setSizeMax方法

setSizeMax方法用于设置请求消息实体内容的最大允许大小,以防止客户端故意通过上传特大

的文件来塞满服务器端的存储空间,单位为字节

。其完整语法定义如下:

public void setSizeMax(long sizeMax)