版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1313章章 文件操作实例文件操作实例在本章中主要讲解在在本章中主要讲解在Web应用程序中的文件上传技术,应用程序中的文件上传技术,在在Web应用程序中可以通过一个应用程序中可以通过一个apche组织开发的用于上传组织开发的用于上传的组件的组件Common-FileUpload来实现文件上传,使用这个组来实现文件上传,使用这个组件可以很容易的实现文件的上传功能。件可以很容易的实现文件的上传功能。在在Struts中已经对这个组件进行了封装,并且使用上传中已经对这个组件进行了封装,并且使用上传文件的过程更加透明化,此外,文件的过程更加透明化,此外,Struts封装了另一个实现上封装了另一个实现
2、上传文件的项目,名叫传文件的项目,名叫COS,该项目在,该项目在Struts 2中实现文件上中实现文件上传非常简单,只需要在传非常简单,只需要在Action中添加几个属性就可以了。中添加几个属性就可以了。13.1 Struts 213.1 Struts 2文件上传文件上传在在Struts 2中并没有提供有自己的上传文件的组件,但中并没有提供有自己的上传文件的组件,但是是Struts 2可以使用其他的上传文件的组件,例如前面提到可以使用其他的上传文件的组件,例如前面提到的的Commons-FileUpload、COS等,等,Struts 2只是为这些只是为这些上传文件的组件做了统一的接口,而且开
3、发人员在使用上传文件的组件做了统一的接口,而且开发人员在使用Struts 2时可以不用了解这些上传组件的具体细节就可以完时可以不用了解这些上传组件的具体细节就可以完成文件上传。成文件上传。13.1.1 Struts 213.1.1 Struts 2对上传文件的支持对上传文件的支持目前的目前的Struts 2支持有三种文件上传的组件,分别是支持有三种文件上传的组件,分别是Commons-FileUpload、cos和和pell,并且这三种文件上传,并且这三种文件上传组件都可以配置到组件都可以配置到Struts的配置文件的配置文件perties文件文件中。中。如果使用如果使用C
4、ommons-FileUpload来上传文件的话,必来上传文件的话,必须要引入须要引入commons-io-1.4.jar文件和文件和commons-fileupload-1.2.1.jar文件,于此相同,如果使用文件,于此相同,如果使用COS或者或者pell的话,也需要引入相关的的话,也需要引入相关的jar文件,才能够正常的进行文文件,才能够正常的进行文件的上传。件的上传。13.1.2 13.1.2 上传文件的上传文件的JSPJSP页页本节所给出的本节所给出的JSP文件上传页面采用了文件上传页面采用了Struts 2标签来标签来实现,文件名为实现,文件名为uploadstruts.jsp其中
5、其中UploadAction是处理上传文件请求的是处理上传文件请求的Action类的类的名字,该名字,该Action类所对应的类名也为类所对应的类名也为UploadAction。13.1.3 13.1.3 上传文件的上传文件的ActionAction类类这个例子使用了这个例子使用了Struts 2来实现,存在的一些上传过程来实现,存在的一些上传过程中所出现的信息,如上传文件名、上传文件类型、上传文件中所出现的信息,如上传文件名、上传文件类型、上传文件的内容。因而,需要在的内容。因而,需要在Action类中必须有和这些信息对应的类中必须有和这些信息对应的属性,才能在属性,才能在Action类中使
6、用这些信息。类中使用这些信息。UploadAction是一个是一个Action类,该类实现了上传单个类,该类实现了上传单个文件的功能。文件的功能。13.1.4 13.1.4 配置上传文件的配置上传文件的ActionAction类类配置配置UploadAction类的方法和配置普通的类的方法和配置普通的Action类的类的方法类似,只是需要使用方法类似,只是需要使用标签来设置上传文件的保标签来设置上传文件的保存路径。存路径。如果此时在文件上传时,服务器中已经存在一个名为如果此时在文件上传时,服务器中已经存在一个名为“abc.txt的文件,但是在上传时又将一个新文件起名为的文件,但是在上传时又将一
7、个新文件起名为“abc.txt”,此时跳转到,此时跳转到reslt.jsp页面后,会提示该文件已页面后,会提示该文件已经存在。经存在。13.1.5 13.1.5 过滤上传文件的类型过滤上传文件的类型在一些在一些Web程序中,往往会限制某一类文件类型的上程序中,往往会限制某一类文件类型的上传,如只允许上传图片文件,或者只允许上传音乐文件等。传,如只允许上传图片文件,或者只允许上传音乐文件等。Struts 2中实现该功能也十分的简单,只需要在中实现该功能也十分的简单,只需要在UpLoadAction中中uploadContentType属性进行设置就可以属性进行设置就可以了,通过这个属性可以获得上
8、传文件的类型,例如上传文件了,通过这个属性可以获得上传文件的类型,例如上传文件的扩展名是的扩展名是JPEG,uploadContentType的实行就是的实行就是images/JEPG。有很多上传文件的程序会限制上传文件的类型,如只有很多上传文件的程序会限制上传文件的类型,如只允许上传图像文件,在允许上传图像文件,在Struts 2中要实现这个功能也非常简中要实现这个功能也非常简单。在单。在UploadAction类中,有一个类中,有一个uploadContentType属属性,通过这个属性可以获得上传文件的类型,如上传文件的性,通过这个属性可以获得上传文件的类型,如上传文件的扩展名是扩展名是
9、jpg,则,则uploadContentType属性的值是属性的值是image/jpeg。13.2 13.2 多个文件上传多个文件上传在实际的在实际的Web项目中,往往需要多个文件同时上传,项目中,往往需要多个文件同时上传,在前面已经介绍了单个文件的上传,使用在前面已经介绍了单个文件的上传,使用Struts 2只需要声只需要声明几个数组或是明几个数组或是List对象,就可以比较容易的将多个文件域对象,就可以比较容易的将多个文件域上传的数据进行封装,而程序员只需要关注处理逻辑就可以上传的数据进行封装,而程序员只需要关注处理逻辑就可以了。了。13.2.1 13.2.1 上传固定数目的文件上传固定数
10、目的文件如果是用数组来上传固定数目的文件,需要将如果是用数组来上传固定数目的文件,需要将Action中的一些属性修改为数组类型中的一些属性修改为数组类型在单击在单击“添加文件添加文件按钮后,会在下方多出一个文件按钮后,会在下方多出一个文件浏览框。浏览框。 13.2.2 13.2.2 上传任意数目的文件上传任意数目的文件除了可以使用数组来处理多个上传文件了,除了可以使用数组来处理多个上传文件了, 可以使用可以使用List对象来完成和数组同样的工作,如对象来完成和数组同样的工作,如UploadMoreAction类的代码中的数组类型的属性可以修改成类的代码中的数组类型的属性可以修改成List类型。
11、类型。13.3 Commo-FileUpload13.3 Commo-FileUploadCommons-FileUpload是是apache组织所开发的用于上组织所开发的用于上传的组件,通过这个组件可以很容易的完成单个或者多个文传的组件,通过这个组件可以很容易的完成单个或者多个文件的上传,在件的上传,在Struts 2中也可以使用中也可以使用Commons-FileUpload来进行文件的上传,本节中将使用来进行文件的上传,本节中将使用Commons-FileUpload介绍上传一个或者多个文件。介绍上传一个或者多个文件。13.3.1 Commons-FileUpload13.3.1 Com
12、mons-FileUploadCommons-FileUpload组件是组件是apache的的Commons组组件包中的一个组件,读者可以通过如下的件包中的一个组件,读者可以通过如下的URL来下载来下载Commons-FileUpload的最新版本。的最新版本。/fileupload/下载下载Commons-FileUpload组件目前的最新版本,在组件目前的最新版本,在解开压缩包后,需要在解开压缩包后,需要在MyEclipse的的webdemo工程中引用工程中引用jar文件。文件。Commons-FileUpload组件还依赖一个组件还依赖一个Common
13、s-IO组件,该组件可以从如下的组件,该组件可以从如下的URL下载最新的下载最新的版本版本/io/ 下载下载Commons-IO组件目组件目前的最新版本,在解开压缩包后,需要在前的最新版本,在解开压缩包后,需要在MyEclipse的的webdemo工程中引用工程中引用jar文件。文件。13.3.2 13.3.2 上传单个文件上传单个文件使用使用Commons-FileUpload进行文件的上传非常简单,进行文件的上传非常简单,只需要在页面中提供一个标签只需要在页面中提供一个标签,并设置,并设置表单的表单的enctype属性值设为属性值设为“multipart
14、/form-data就可以了就可以了。在本示例中,上传文件的页面时在本示例中,上传文件的页面时uploadservlet.jsp,在页,在页面中有一个输入上传文件的文本框和一个输入新文件名的文本面中有一个输入上传文件的文本框和一个输入新文件名的文本框。输入新文件名是为了给文件进行重命名,如果不输入新文框。输入新文件名是为了给文件进行重命名,如果不输入新文件名的话,默认是使用原来的文件名进行上传。件名的话,默认是使用原来的文件名进行上传。在在FileItem接口中还定义了几个方法来获得表单域中的接口中还定义了几个方法来获得表单域中的信息,这些方法如下。信息,这些方法如下。getFieldName
15、方法:该方法用于获得表单域的方法:该方法用于获得表单域的name属性值。属性值。getString方法:该方法用于获得表单方法:该方法用于获得表单value属性值,其属性值,其中方法的参数用于设置中方法的参数用于设置value属性值的编码格式。属性值的编码格式。getName方法:该方法仅对文件域有效,用于返回上方法:该方法仅对文件域有效,用于返回上传文件的文件名。传文件的文件名。getContentType方法:该方法仅对文件域有效,用于方法:该方法仅对文件域有效,用于返回上传文件的文件类型。返回上传文件的文件类型。get方法:该方法仅对文件域有效,用于返回上传文件方法:该方法仅对文件域有效,用于返回上传文件的字节数组。的字节数组。getInputStream方法:该方法仅对文件域
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧工地VR安全教育体验馆建设方案
- 金属切屑收集清理操作工规程
- 2026年麻醉专业结业考核科内模拟试题附答案
- 慢性偏头痛针灸联合药物疗程标准共识
- PCB工程师职业技能考证试题及详细参考答案
- Oracle OCA 12c 认证考试真题及详细答案解析
- MDS输血依赖远期并发症监测共识
- 2026年低压电气考试试题及答案
- 培训机构学员接送操作规程
- NPET全国中小学英语水平测试模拟试题(含详细答案解析)
- 《机械基础》课件 第十章 气压与液压传动
- 2025年红十字应急救护知识竞赛题库附含参考答案
- 2025年试验检测师(含助理)-公共基础(含助理)考试备考题库附带答案
- 工程联系单管理办法(含附件)
- 清大工程热力学课件13课程总结
- 前列腺健康讲座课件
- 德育与学科教学的融合
- 四诊闻诊课件
- 教育管理基础数据元素和代码规范 第3部分:资产
- 《自然教育师规范》(T-CSF 001-2022)
- 工程项目智慧管理 课件 模块四 工程项目智慧成本控制
评论
0/150
提交评论