绕过文件系统,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)

相关推荐

  • 两台电脑如何联机,不需要联网的ocr

    两台电脑如何联机,不需要联网的ocr两台电脑如何联机,不需要联网的ocr两台电脑如何联机,不需要联网的ocr两台电脑如何联机,不需要联网的ocr

        前段时间,微信 PC 端更新了一个 OCR 功能,能识别图片里的文字。   说实话,这应该是微信 10 年来推出的最实用功能之一了。   比如你用微信截图时,只要点击下方的「 识别文字 」,就可以获取截图里的文字。   在微信里收到的图片,也支持你直接选取文字复制。   除了功能实用,另一方…

    2023-07-03 • 投稿
  • 余额宝限额怎么调整(余额宝转出限额设置怎么设置)

    关于余额宝限额的消息证明,从5月27日凌晨0点开始,个人顾客的最高限额从100万下降到了25万。 到目前为止市场谣言是下调到50万元。 天弘基金表示,余额宝客户超过3亿,以小额资产管理为主,远低于25万元。 这次,限额调整对大部分客户影响不大。 自余额宝于2005年上市以来,其管理者蚂蚁金服控股企业天弘基金规模迅速上升,成为最初规模超过万亿的公募基金。 但是…

    2021-11-10
  • 做自媒体不敢发文章怎么办?解决你不敢发文章的心理因素

    解决你不敢发文章的心理因素 很多人想要学习写文章或制作音频和视频,但是,他们心中却又许多的顾虑… 例如:“我不会写作,我写出来的文章让人看到后,让我感到很丢人。” 又或者:“我担心自己写的文章不能让人们相信,我害怕遭到读者们的批评,我害怕写出来的文章无法获得流量。” 等等,以及更多的顾虑。 实际上,没有任何人可以写出一篇满足任何人的文章,不论一个人写的文章有…

    2022-04-29
  • 干啥能赚钱(现在干啥能赚钱)

      “我现在身无分文,应该怎样去赚钱?”   类似这样的问题,我在评论区看到了好多。   我是个学生,我是个全职在家的宝妈,我是个农村刚毕业的孩子等等,没有资金、人脉该怎样赚到钱?   在没钱的情况下,怎样去赚到钱,趁着今天早茶的功夫,我在这里和大家统一聊聊。   当你什么都没有,你该怎么赚到钱?三个建议,供…

    2022-01-21
  • 功率器件是什么(功率器件IDM是什么)

    功率器件是什么(功率器件IDM是什么)功率器件是什么(功率器件IDM是什么)功率器件是什么(功率器件IDM是什么)功率器件是什么(功率器件IDM是什么)

    特斯拉推出了Model3采用了SIC功率器件,把SIC运用在电控上的热度推高一个台阶,给了大主机厂和零配件厂商SIC功率器件在电机控制上的一个量产案例;2019年9月11日,在法兰克福车展上,德尔福科技全球首发800V SIC电机控制器,从宣传的一些资料上可以看出,德尔福把自己原本用在沃兰达TPIM电控上SI双面水冷的封装,被称为Viper Power Sw…

    2023-05-24 • 投稿
  • 苏炳添有望获奥运奖牌 ,苏翊鸣参加冬奥会吗

    北京冬奥会尚未结束 中国代表团已经创造历史最好战绩 其中苏翊鸣斩获一金一银 被“亚洲飞人”苏炳添夸为“雪上苏神” 昨夜突然传来消息 作为“苏神”本尊 苏炳添也有望获得一枚奥运奖牌 苏炳添不是参加夏奥会的吗? 这还火线跨界跨项了? 不过即使苏炳添和队友们拿到奖牌 有些遗憾也终归不能完全弥补 这一点巩立姣一定深有体会 作为奥运会“四朝元老” 巩立姣集齐了金、银、…

    2023-06-06
  • 怎么判断幼猫要死(幼猫自己会感觉要死了)

    怎么判断幼猫要死(幼猫自己会感觉要死了)怎么判断幼猫要死(幼猫自己会感觉要死了)怎么判断幼猫要死(幼猫自己会感觉要死了)怎么判断幼猫要死(幼猫自己会感觉要死了)

    油条子始终相信,人类把自己想的太高端了,觉得自己能借助科学仪器来提升自己能力。但是在自然状态下动物肯定比人类更加“知天命”。猫咪去世前,是知道自己命不久矣,只要是自然衰老将要去世的猫咪都会躲起来不让人看到尸体(当然这里说的遭横祸而死的猫咪是来不及躲走的)。 以前家里养了一个猫,名字叫小花,大概是2000年养的,来家里时是一只未成年的小猫。由于在家里没有做绝育…

    2022-05-08 • 投稿
  • 哪些可以赚钱的小软件(什么APP能赚钱)

    哪些可以赚钱的小软件(什么APP能赚钱)哪些可以赚钱的小软件(什么APP能赚钱)哪些可以赚钱的小软件(什么APP能赚钱)哪些可以赚钱的小软件(什么APP能赚钱)

    大家好,自从有了大宝后,总觉生活压力倍增,因此工作之余,就想各种方法挣点小钱。我也不是什么大咖,也没什么什么才华,甚至什么特长也没有,所有就靠下载了各种挣钱软件来搞点菜钱。接下来我就和大家分享一下我下载的这几款挣钱软件,自己玩的感受与心得。 我所接触的这几款挣钱软件,它们都有一个最大的共同点那就是邀请好友,只要你能够邀请足够多的好友,那挣钱相对来说就比较容易…

    2021-11-23 • 投稿
  • 同性恋在中国什么时候合法结婚,中国未来会允许同性合法吗

    2000年12月,荷兰参议院通过一项法律,允许同性恋者结婚并领养孩子,该项法案于2001年4月1日正式生效,荷兰成为全球第1个同性婚姻合法化的国家,该法不但允许同性婚姻,而且可以完全享有与异性婚姻相同的所有权益。 荷兰出台这一法律后,在国际上引起了广泛关注。不同国家,地区的人们纷纷讨论同性恋是否应该被国际认同。而中国**于2017年5月也通过法律确认了同性婚…

    2022-03-21
  • 真韵皇茶怎么样(皇茶真韵加盟teastory连锁)

    创客”一词首次出现在政府工作报告中,成为两会热词。活跃在各地的创客空间和创客们似乎也在今年呈井喷式的出现在朋友圈,而创客的主力们不是中青年反倒是平均年龄在25岁左右的90后青少年。 这是一群在互联网的世界里长大、从小不愁吃穿的“90后”们,为梦想、志趣而工作创业的他们,在创业圈的江湖里追求着属于自己的或天马行空,或璀璨炫目,或简单纯粹,或小而美的创业梦想。自…

    2021-11-30
  • 网络直播带货的优缺点分析

    自从有了直播带货的行业后,我身边的人就陆续地开始在直播间买东西了。引用他们的话来说,就是很便宜。 “直播间卖的东西,真的就那么便宜吗?” 这个疑问困惑了我很多年,但我始终没有想过要找出这个疑问的答案。因为我过往的经历一直在提醒着我,一分钱一分货,便宜肯定没有好货。 所以,不管身边的人如何美言直播带货,我迟迟站在直播带货的门外纹丝不动。 我这个人有一个算是比较…

    2023-02-10
  • 3ds怎么升级版本,任天堂3ds更新

    今年3月,任天堂正式关闭了3DS掌机的eShop商店,这意味着所有3DS玩家都将无法在这款掌机上购买新的数字版游戏。 快科技5月24日获悉,在停止商店运营数月后,任天堂突然为3DS推送了一个新的更新补丁,该补丁阻止了用户对掌机进行破解,从而运行盗版游戏。 如果是对于Switch、PS5这样仍在生命周期内的主机来说,官方发布更新封堵破解漏洞并不是什么难以理解的…

    2023-07-08