Commons-FileUpload组件实现文件上传
目前有很多的非常实用的文件上传工具,可以帮我们实现文件上传的功能,其中应用比较多的是Commons-FileUpload组件,使用该组件可以极大的简化开发人员的编码工作量。
Commons-FileUpload 简介
Commons 是Apache 开放源文件代码组织的一个java子项目,该项目涉及一些开发中常用的模块,如文件上传,命令行处理,数据库池连接等。FileUpload就是其中的一个用于处理HTTP文件上传的子项目。Commons-FileUpload组件具有以下几个特点。
1.使用简单:Commons-FileUpload 组件可以方便的嵌入JSP文件中,在JSP文件中仅编写少量代码即可完成文件的上传功能,十分方便。
2.能够全程控制上传内容:使用Commons-FileUpload 组件提供的对象及操作方法,可以获得全部上传文件的信息,包括文件名称,类型,大小等,方便操作。
3.能够对上传文件的大小,类型进行控制:为了避免在上传过程中出现异常数据,在Commons-FileUpload 组件中,专门提供了相应的方法用于对上传文件进行控制。
提示: 获取Commons-FileUpload组件的步骤:
(1)登录网站 http://commons.apache.org/fileupload 下载 Commons-FileUpload 组件,即commons-fileupload-1.2.2-bin-zip,将下载的文件解压,得到commons-fileupload-1.2.2 文件夹。其中,commons-fileupload-1.2.2/lib/commons-fileupload-1.2.2.jar 即为Commons-FileUpload组件类库。commons-fileupload-1.2.2\site\apidocs 为Commons-FileUpload组件的API文档,可以访问index.html 查阅相关的类和接口。
(2) 登录网站 http://commons.apache.org/io 下载Commons-IO 组件,即commons-io-2.4-bin.zip。该组件用于处理文件上传所依赖的I/O操作。 将下载得到的 commons-io-2.4-bin.zip文件解压,得到commons-io-2.4文件夹。其中,commons-io-2.4.jar文件即为Commons-IO组件类库。commons-io-2.4\docs 为Commons-IO组件的API文档,可以访问index.html查阅相关的类和接口。
表单的属性设置
文件上传时,需要在表单属性中添加enctype属性,该属性用于设置表单提交数据的编码方式。由于文件传至服务器时与一般文本类型的编码方式不同,需要使用multipart/form-data的编码方式。该属性的设置如下。
<form enctype="multipart/form-data" method="post">
注意: 上传文件时form标签的method属性值必须为 “post”,不能为“get ”。
知识扩展:表单的enctype属性有以下三个值:
1.application/x-www-form-urlencoded: 是其默认值。该属性主要用于处理少量文本数据的传递。在向服务器发送大量的文件包含非ASCII字符的文本或二进制数据时效率很低。
2.multipart/form-data:上传二进制数据,只有使用了multipart/form-data 才能完整地传递文件数据,进行上传操作。
3.text/plain:主要用于向服务器传递大量文本数据,比较适用于电子邮件的应用。
使用File 控件选择文件
我们知道通过设置input标签的type属性实现在页面中添加不同类型的控件,如文本输入框,按钮等。如果实现文件上传,就需要在页面中使用File控件。在表单中添加File控件的代码如下。
<form action=".." enctype="multipart/form-data" method="post">
<p>姓名:<input type="text" name="user"></p>
<p>选择图片:<input type="file" name="nfile"></p>