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的
录,并在fileupload目录中创建一个名为
的网页文件,在该文件中写上“这是页面的原始内容!”这几个字符。
(2)在
WEB-INF目录中创建一个名为classes的子目录和一个
文件,文件内容如下:
(3)要使用Apache文件上传组件,首先需要安装Apache文件上传组件包。在 目录>webappsfileuploadWEB-INF目录中创建一个 名为lib的子目录,然后从网址/commons/fileupload下载到Apache 组件的二进制发行包,在本书的附带带光盘中也 提供了该组件的二进制发行包,文件名为。从 压缩包中解压出commons-fileupload -文件,将它放置进 就完成了Apache文件上传组件的安装。 (4)在 用于放置本章编写的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文件存放 到 环境变量的设置值由于排版原因进行了换行,实际上不 应该有换行。接着在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)
发布评论