JSP文件上传(CommonsFileUpload)
文件上传就是对文件进行读写,需要编写大量的代码来实现,而且容易发生异常。幸运的是,有很多实用的工具,可以帮助我们实现文件上传的功能,其中应用比较多的是CommonsFileUpload组件。本节我们在JSP中使用CommonsFileUpload组件来实现文件上传。
CommonsFileUpload组件具有以下特点:
使用简单:CommonsFileUpload可以内嵌到JSP页面中,所以只需要编写少量的代码就可以完成文件的上传功能。
能够全程控制上传内容:使用CommonsFileUpload组件提供的对象及操作方法,可以获得上传文件的信息,即文件名称、类型和大小等。
能够控制上传文件的大小和类型:为了避免在上传过程中出现异常数据,CommonsFileUpload组件提供了相应的方法来控制上传文件。
CommonsFileUpload组件依赖于FileUpload和Commons,需要commonsfileuploadxx。jar和commonsioxx。jar文件。
commonsfileuploadxx。jar下载地址:https:commons。apache。orgfileupload
commonsioxx。jar下载地址:https:commons。apache。orgioCommonsFileUpload组件API
下面我们介绍一下CommonsFileUpload组件的接口和实现类。
1。ServletFileUpload类
ServletFileUpload类用于实现文件上传操作,常用方法如下:
方法
说明
publicvoidsetSizeMax(longsizeMax)
设置上传文件总量的最大值(包含文件和表单数据)
publicListparseRequest(HttpServletRequestreq)
解析form表单提交的数据,返回一个FileItem实例的集合
publicstaticfinalbooleanisMultipartContent(HttpServletRequestreq)
判断请求信息中的内容是否是multipartformdata类型,是则返回true,否则返回false。
publicvoidsetHeaderEncoding(Stringencoding)
设置转换时所使用的字符集编码
2。FileItem接口
FileItem接口用于封装单个表单字段元素的数据,一个表单字段对应一个FileItem实例,本节示例中使用的是其实现类DiskFileItem。FileItem接口提供的常用方法如下:
方法
说明
publicbooleanisFormField()
用于判断FileItem类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果是普通表单字段则返回true,否则返回false。因此,可以使用该方法判断是否为普通表单域,还是文件上传表单域。
publicStringgetName()
获取文件上传的文件名
publicStringgetFieldName()
返回表单字段元素的name属性值
publiclonggetSize()
获取上传文件的大小
publicStringgetString()
将FileItem对象中保存的主体内容以一个字符串返回。其重载方法publicStringgetString(Stringencoding)中的参数用指定的字符集编码方式
publicvoidwrite()
将FileItem对象中保存的主体内容保存到指定的文件中。
3。FileItemFactory接口与实现类
创建ServletFileUpload实例需要依赖FileItemFactory工厂接口。DiskFileItemFactory是FileItemFactory接口的实现类,该类的常用方法如下。
方法
说明
publicvoidsetSizeThreshold(intsizeThreshold)
设置内存缓冲区的大小
publicvoidsetRepository(Stringpath)
设置临时文件存放的目录
JSP上传文件
JSP和HTMLForm标签一起使用,来允许用户把文件上传到服务器。上传的文件可以是文本文件、图像文件或其它任何文档。
创建上传文件表单时,需要注意以下几点:
表单的method属性必须设置为POST方法,不能使用GET方法。
表单enctype属性应设置为multipartformdata。
表单action属性应设置为对应的Servlet,用来处理文件上传的逻辑代码,下面示例中使用FileUploadServlet处理逻辑。
使用标签上传单个文件,属性typefile。上传多个文件需添加多个标签。
拓展
表单的enctype属性有以下3个值:
1、applicationxwwwformurlencoded:默认值,用于处理少量文本数据的传递。向服务器发送大量的文件或二进制数据时,效率很低。
2、multipartformdata:上传二进制数据,只有使用了multipartformdata才能完整的传递文件数据,进行上传操作。
3、textplain:用于向服务器传递大量文本数据,适用于电子邮件的应用。
开课吧广场人才学习交流平台
网贷逾期做通讯录防爆有用吗?没用,这是骗人的。网贷逾期之后目前最有效、最经济的方式就是电催,但是电催的信息从哪里来?一个是当初申请的时候来的,另一个就是大数据。虽然现在催收在经过国家严打之后不会上门……
科技冬奥创新先行来源:人民网人民日报核心阅读申冬奥成功以来,科技冬奥重点攻关大力推进,《科技冬奥(2022)行动计划》全面展开,国家重点研发计划科技冬奥重点专项有序推进,取得了一系……
物联网如火如茶,LoRaSigfoxNBIoT三大物联网技术本文1550个字,大约需要两三分钟,完整阅读更精彩,欢迎评论关注收藏分享!无线通信技术是物联网的传输基础,随着智慧城市大应用成为热门发展,各种技术推陈出新,纷纷抢占物联网……
Soul发布报告20。4的Z世代选择今年双十一不购物36氪获悉,Soul发布Z世代双十一报告。数据显示,在Z世代中,有超过2成的年轻人参与了6年及以上的各大电商平台的双十一购物活动,且天猫淘宝仍然是6成以上青年双十一期间网购的首……
新闻源发布软文如何使企业推广更上一层楼?新闻软文营销对企业品牌和产品推广有很大效果,新闻不单单是局限在新闻层面,很多企业开始运用新闻软文做营销推广。也因此获得很大收益。软文营销,就是指通过特定的概念诉求、以摆事……
商城小程序开发定制如今,越来越多的商家发现了私域流量的重要性,很多商家开始关注腾讯推出的小程序,纷纷想开发一个属于自己的小程序,用自己的小程序来做生意。那么开发一个小程序商城要多少钱呢?一……
AR和VR的风口里,站的是哪些公司?就在五一假期期间,HTC透露了即将在下周发布的两款VR头显,上市开卖的时间也大概率在这个月。我们跟踪观察HTC已经有四五年的时间了。说到HTC,它是中国台湾地区的IT企业……
跨国药企在中国欧加隆与阿里健康达成合作首个项目聚焦男性脱发《科创板日报》(上海,记者朱洁琰)讯,10月15日,今年刚从默沙东拆分的药企欧加隆宣布,与阿里健康签署战略合作协议,达成伙伴关系,探索包括女性健康、慢性疾病等在内的多个疾病领域……
快40的人被公司辞退,没有技术没有背景没有资金,还能做什么?谢邀,还能做的有很多吧!别的不说,送外卖总行吧,只要认识字,会抢单,有个电瓶车就可以了,而且送外卖这个工作虽然辛苦,收益还是很不错的,很多送外卖的都是月入过万的,而且如果……
自己的华为手机越用越卡,有没有好的解决办法?如今;华为,小米,都响当当。尤其华为,统贯全球。论岁数;联想:已到老年,手机大战,心有余而力不足,还不如当年:老黄忠。华为:正当壮年,经验丰富,技术先进,踏实有为,手机质量好耐……
如果美国解体分裂,谁能成为世界超级大国呢?我以为,如果美国解体,世界就没有超级大国了。中国确实渐渐强大起来,但我们中国不想成为超级大国,这是毛主席早就制定的战略国策。深挖洞,广积粮,不称霸。中国永远不做欺负……
win11强制升级贴心教程很多人私信问升级方案,所以我就索性做一个升级教程,有问题大家提出来我会及时更新。我这里提供两个升级方案供大家选择,升级之前还是建议大家对重要数据进行备份,尽管理论上升级过……