绕过文件系统,jsp文件上传绕过

文件上传就是对文件进行读写,需要编写大量的代码来实现,而且容易发生异常。幸运的是,有很多实用的工具,可以帮助我们实现文件上传的功能,其中应用比较多的是 Commons-FileUpload 组件。本节我们在 JSP 中使用 Commons-FileUpload 组件来实现文件上传。

Commons-FileUpload 组件具有以下特点:

使用简单:Commons-FileUpload 可以内嵌到 JSP 页面中,所以只需要编写少量的代码就可以完成文件的上传功能。

能够全程控制上传内容:使用 Commons-FileUpload 组件提供的对象及操作方法,可以获得上传文件的信息,即文件名称、类型和大小等。

能够控制上传文件的大小和类型:为了避免在上传过程中出现异常数据,Commons-FileUpload 组件提供了相应的方法来控制上传文件。

Commons-FileUpload 组件依赖于 FileUpload 和 Commons,需要 commons-fileupload-xx.jar 和 commons-io-xx.jar 文件。

commons-fileupload-xx.jar 下载地址:https://commons.apache.org/fileupload/

commons-io-xx.jar 下载地址:https://commons.apache.org/io/  Commons-FileUpload组件API  下面我们介绍一下 Commons-FileUpload 组件的接口和实现类。

1. ServletFileUpload类

ServletFileUpload 类用于实现文件上传操作,常用方法如下:

方 法

说 明

public void setSizeMax(long sizeMax)

设置上传文件总量的最大值 (包含文件和表单数据)

public List parseRequest(HttpServletRequest req)

解析 form 表单提交的数据,返回一个 FileItem 实例的集合

public static final boolean isMultipartContent(HttpServletRequest req)

判断请求信息中的内容是否是”multipart/form-data“类型,是则返回 true,否则返回 false。

public void setHeaderEncoding(String encoding)

设置转换时所使用的字符集编码

2. FileItem接口

FileItem 接口用于封装单个表单字段元素的数据,一个表单字段对应一个 FileItem 实例,本节示例中使用的是其实现类 DiskFileItem。FileItem 接口提供的常用方法如下:

方 法

说 明

public boolean isFormField()

用于判断 FileItem 类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果是普通表单字段则返回 true,否则返回 false。因此,可以使用该方法判断是否为普通表单域,还是文件上传表单域。

public String getName()

获取文件上传的文件名

public String getFieldName()

返回表单字段元素的 name 属性值

public long getSize()

获取上传文件的大小

public String getString()

将 FileItem 对象中保存的主体内容以一个字符串返回。其重载方法 public String getString(String encoding) 中的参数用指定的字符集编码方式

public void write()

将 FileItem 对象中保存的主体内容保存到指定的文件中。

3. FileItemFactory接口与实现类

创建 ServletFileUpload 实例需要依赖 FileItemFactory 工厂接口。DiskFileItemFactory 是 FileItemFactory 接口的实现类,该类的常用方法如下。

方 法

说 明

public void setSizeThreshold(int sizeThreshold)

设置内存缓冲区的大小

public void setRepository(String path)

设置临时文件存放的目录  JSP上传文件  JSP 和 HTML Form 标签一起使用,来允许用户把文件上传到服务器。上传的文件可以是文本文件、图像文件或其它任何文档。

创建上传文件表单时,需要注意以下几点:

表单的 method 属性必须设置为 POST 方法,不能使用 GET 方法。

表单 enctype 属性应设置为 multipart/form-data。

表单 action 属性应设置为对应的 Servlet,用来处理文件上传的逻辑代码,下面示例中使用 FileUploadServlet 处理逻辑。

使用 标签上传单个文件,属性 type=”file”。上传多个文件需添加多个 标签。

拓展

表单的 enctype 属性有以下 3 个值:

1、application/x-www-form-urlencoded:默认值,用于处理少量文本数据的传递。向服务器发送大量的文件或二进制数据时,效率很低。

2、multipart/form-data:上传二进制数据,只有使用了 multipart/form-data 才能完整的传递文件数据,进行上传操作。

3、text/plain:用于向服务器传递大量文本数据,适用于电子邮件的应用。

开课吧广场-人才学习交流平台

本文来自投稿,不代表展天博客立场,如若转载,请注明出处:https://www.me900.com/325913.html

(0)

相关推荐

  • 淘宝车险怎么买(车险在哪个平台买比较划算)

    随着我国汽车保有量的稳定增长,车险公司间的竞争也显得格外激烈。为自身车辆投保车险就是为了保证各位车主的行车安全,车险的服务优劣直接影响到车主的切身利益。因此,车险的选择显得格外重要。一般而言,我们都会在占据财险保费市场上70%江山的人保、平安、太平洋做出选择,这三家究竟哪家最划算? 保费收入情况 所谓的保费收入,是指保险公司为达到合同规定的义务向投保人收取的…

    2021-11-10
  • 加入天猫需要多少钱,天猫入驻费用

    电商,线上购物等虽然一直以来都是热议的焦点,不断成为了消费者的首选生活方式,但是这种情况在2020年显得尤为的突出。由于新冠疫情的原因,消费者们无法迈出家门只能通过线上购物方式来选择自己心仪的产品,这也从一方面使得很多本来没有接触过网购的人加入到了“剁手”的大军之中。根据江雀了解到的情况,虽然临近年底,疫情已基本稳定,但是不论是“双十一”还是随之而来的“双十…

    2023-06-02
  • 张继科带张蕊和小男孩同回小区(张继科在小区打球)

    近日,张继科和张蕊被媒体拍到同回小区。据悉,两人一年前就被拍到过一起出入这个小区,两人的关系似乎不一般,而此次两人一起被拍到,还有一个小男孩一路随行。不得不感叹,娱乐圈还真是个圈啊,这位张蕊正是白百何的现任张思麟的前妻。 其实在此之前,两人已经被拍到多次同框出行。从2020年开始,就陆续有两人相恋的相关传闻。2021年年底,还有网友拍到张继科和美女一起出游三…

    2023-02-03 投稿
  • seo每天发多少外链(seo外链推广)

    发布外链的目的是链接传递权重从而提升关键词排名,而所谓针对其他平台的推广工作和SEO本质上的外链发布是两个事情。这篇文章只谈SEO的网站外链怎么发布。   针对于初学SEO的人群,网站外链建设是一个非常重要的初期工作。但实际情况下大多数从业者每天发布的外链,甚至累计一年发布的外链大多数都是徒劳的无用功。那外链应该怎么发呢?今天就和你一起讨论一下SEOer们应…

    2021-11-29
  • 做生意的技巧,开店做生意的技巧及经验

    自己开店创业是一种选择,做创业的范围很广,各人有各人的方法和特点,做好生意也是需要有很多的经验和技术,经验不足的朋友们,不妨来了解学习一下开店做生意的技巧! 开店做生意的技巧 一、选择好店面 想要生意做得好,必然得考虑到天时地利人和,一个好的店面位置,往往能够为自己带来无数客流,只要能够把握住消费者的需求,赚钱方面自然就会显得轻而易举。一般来说,在商场、写字…

    2022-04-17
  • 聊一下网站收录数据情况

    近段时间没有怎么更新网站,主要是时间太紧,重心放在测试上面了,几年前玩过的一个流量渠道,换一个群体效果还不错,所以一直在测试着,看看能不能做出效果,所以网站更新的事情就放下了。   毕竟网站还没开始任何盈利,先放在一边,急啥呢…   因为网站没有更新,有一位做网站的朋友问我,最近网站不收录,问我的网站咋样,我回答:还好,没有刻…

    2020-05-16
  • 菜鸟驿站怎么加盟开店要多少钱?

    想在隔壁新入住的小区弄一家菜鸟驿站,新手小白,不知道从哪下手,所以我选择了一条相对来说比较简单的捷径,去一家大学城里的菜鸟驿站工作,慢慢的一点点学起,在跟老板说明来意,让他多教一些东西,大家有没有同样的经历,分享一下你的心路历程。 第一天来跟老板沟通,老板就说想要入这一行也不是很简单的,要有一定的资源,并不是每个快递站都赚钱的,要看有没有快递公司跟你合作,有…

    2022-04-21
  • 百度seo排名公司seo,百度首页排名优化公司

    如果你在操作一个大型网站! 你一定会遇到这样的问题,网站特定关键词排名,PC端与移动端的排名是不一样的。 这对于新手SEO而言,可能是一个很难理解的事情。 但实际上,存在诸多因素会产生这个问题。   那么,PC端与移动端排名,不一样的因素有哪些? 根据以往大型网站SEO的经验,蝙蝠侠IT,将通过如下内容阐述: 1、终端体验 不同的移动终端访问的数据…

    2022-03-12
  • 恐怖组织排行榜(世界恐怖组织排行榜前十名)

    关于乌克兰敦促他国将俄罗斯列为“支恐国家”的闹剧,越来越多的欧洲人看不下去了。据环球网报道,在欧洲国家内部的一场相关问题辩论中,多名议员不仅认为这一讨论毫无意义,还强烈抨击了西方近年来进行的各种“资助恐怖主义”的行为。 在会议现场,欧洲议员克莱尔·戴利首先强调了非常重要的一点,即所谓的“支持恐怖主义国家”的说法“出自**的法律”,而欧洲诸国的法律则根本没有这…

    2023-04-24
  • 阿玛迪斯战记隐藏关详细介绍,阿玛迪斯战记物品详解

    《阿玛迪斯战记》是一款于2002年问世的经典战棋游戏,距离现在已经整整20年了。 这也是昔日著名的SLG大厂,汉堂国际最后的一款战棋游戏了。在那不久之后,汉堂便被智冠收购改名为智乐堂,逐渐消失在玩家的视野之中。   游戏的主要剧情是围绕着公主复国展开的,类似的桥段在很多战棋游戏里都出现过,无非是公主落难,男主挺身而出,最终沿途招募了一大帮队友成功杀…

    2023-06-30 投稿
  • 核酸检测原始记录,核酸检测原始记录及结果

      这几天,“做核酸”成了生活必须,当你焦急等待核酸检测结果时,是否想过这份报告是怎么出来的?对于大部分人来说“核酸检测”就是到采样点采样,然而采样仅仅是核酸检测的前奏,真正的核酸检测从样本送到新冠核酸检测实验室的那一刻才真正拉开序幕。很多人对检验科的印象是高端的仪器和高度自动化,以为检测过程就是把采好的样本放到机器上就会自动出结果。但目前核酸检测…

    2022-03-17 投稿
  • csgo说话按哪个键(lol内置语音是什么软件)

    最近G2的rekkles在接受采访时提到一个事情,那就是他觉得英雄联盟真的需要尽快内置一个实时的语音沟通系统,这样会大大提高游戏体验。 rekkles是以一个职业选手的角度来看语音沟通对游戏的帮助有多大,但拳头没有考虑过吗?自然是有过想法的,我记得早年间就有过这样的设想,但由于实时语音带来的后果可能超出本身的控制范围,比如最受大家热议的语音骚扰,互喷文化等等…

    2023-05-29