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

相关推荐

  • 淘宝客qq群(淘宝客怎么拉人进群)

    建立一个150个人的群很容易,但重点在于“有效”两个字!很多小伙伴开始运营时过于注重数量而忽略了质量,认为人数越多越好,把一些“低质量”的粉丝拉进群!什么叫“低质量”粉丝呢?不购物、不说话、只抢红包甚至还在群里发广告的这群人就属于低质量粉丝。所以今天这节课我们教大家如何快速组建一个150人的有效微信群。 一、建群的目的 有人问:“我们为什么要组建社群,只发朋…

    投稿 2021-11-30
  • 电脑兼职的正规网站有哪些(电脑兼职的正规网站)

    一、今日头条发布文章、微头条、视频可获得收益。 只要你文笔好,思路清晰,创作能力强,在今日头条赚钱肯定是一个不错的选择,不限地点、不限时间,只要你有空就可以做。 发布文章就像写作文,只要文采好,阅读浏览的人肯定不少。微头条就像我们使用微信发布的动态,有一定的阅读量也可以获得收益哦。自己制作的视频,看的人多也会有收益。   二、头条回答问题 头条回答…

    2022-01-08 投稿
  • 毛利率怎么算公式(毛利率的计算公式是什么)

    我们会计人员并不只是单纯记录公司经济交易往来,还需要计算企业利润、毛利润、净利润等数据。对于这些数据,我们都可以运用到公司管理层面。想要计算毛利润,如此,毛利率也就要进行计算了。那怎么计算毛利率?接下来,小编就为大家介绍一下毛利率的计算公式。 怎么计算毛利率? 毛利率是毛利与销售收入(或营业收入)的百分比,其中毛利是收入和与收入相对应的营业成本之间的差额。计…

    2021-12-06
  • 找在家就能工作(找份网络工作在家赚钱)

    作为一个宝妈没收入,必须通过兼职来搞钱!但是平时得管宝宝,没有时间去做线下兼职,那该怎么办呢? 没关系,可以做网络兼职啊! 这个是我今年最多一个月的兼职收入: 1、码字员 码字员也是我个人比较推荐的,简单不用动脑,就是拿电脑敲敲字就行,唯一要求就是打字够快就行。我一般心烦意乱不想动脑的时候就会做这种兼职,噼里啪啦敲一顿,既得到了发泄又能赚到钱。 2、答题 答…

    投稿 2021-11-29
  • 企业微信和微信的区别(企业微信和个人微信的区别)

    个微与企微 一,微信与企业微信简介 微信(WeChat)是腾讯于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序。由张小龙所带领的腾讯广州研发中心产品团队打造 。微信支持跨通信运营商、跨系统平台通过网络快速发送免费(需消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“…

    2021-12-26 投稿
  • 微信偏门一天1000元(微信捞偏门方法)

    我来说一个我曾经操作过的吧,不是不为人知,而是很多人没有认真去做。 废话不多说;直接上别人的案例: 免费送手表,付29元邮费即可,真的送。手表成本几块钱,邮费平均几块钱,剩下的是毛利润。先把软文写好,手表的价值包装成几百元的,付邮费就可以领取,还是令人蛮心动的。通过大量的微信群,在群里发消息,用户可以免费抽奖,中奖后转发到3个群即可领取奖品。这样通过用户大量…

    2021-11-23
  • 东北糯米 ,圆糯米和长糯米哪个更好

    又快到端午节了,而每年端午节,很多人都会在家包粽子,而包粽子自然少不了糯米。但是昨天早上有两位粉丝给我说:在超市买糯米时,看到糯米有“圆糯米”和“长糯米”,自己想了好久都不知道买哪种,希望您能给我讲解一下:“包粽子选择哪一种糯米好”,而且还能具体讲解一下“圆糯米”和“长糯米”的区别。为了帮助这位粉丝,胡师傅昨天晚上连忙把“圆糯米”和“长糯米”的区别写出来,今…

    2023-06-07
  • 30亿韩元等于多少人民币(300亿韩元等于多少人民币)

    还记得那部火遍大江南北的《来自星星的你》吗?   还记得那个让国内刮起炸鸡啤酒风的千颂伊吗?   还记得那位头小脸小一脸少年气却拥有8块腹肌的都教授吗?     没错,就是他——金秀贤。     为啥突然cue他呢?   还不是因为他终于服役归来并带了新剧《虽然是精神病但没关系》! &nb…

    2022-01-20 投稿
  • 中国出圣人预言,预言中国圣人相貌

    最近,火星男孩再次引起了人们的关注。他发表了惊人的预言,称中国是神国选择的国家,将来会有保护神出现在中国。此言论立即引起轩然大波。 据英国《每日快报》报道,“火星的老板”鲍里斯卡·基普里扬诺维奇(Briska Kipriyanovich)今年20岁,他掌握知识的能力仍然是科学之谜。 但是不管人们是否相信他的话,波尔斯卡提出了一个发人深省的问题-人类的命运。 …

    2022-03-16 投稿
  • 2022年挣钱的好路子,可以自己单干的几个行业

      雨总:跟大家简单分析一下现在有哪些比较好的行业,希望对有择业需求的销售有帮助:   1、宠物行业   宠物行业发展迅速,我们有716学员在一家宠物行业公司做线上销售总监,年薪40万打底   2、 婚介行业   大中型婚介机构销售,开单拿提成,据我们716同学的介绍,她所在的婚介机构,销冠年薪150万,男女…

    投稿 2022-04-29
  • 2022年涨工资及补发时间(补发上半年工资的消息)

    2022年补发6个月工资,是真的吗? 目前,网络上流传着2022年会补发6个月工资的消息,不管是在职人员,还是退休人员,都十分关心这个消息的真假。 其实,经过查证,所谓补发6个月工资,可以有两种理解,第一是在职人员补发上涨的工资,第二是退休人员补发上调的退休工资(严格来说应该是养老金)。   先来说第一种情况,在职人员补发6个月工资吗? 对于企业在…

    2022-03-04
  • 欧洲杯四分之一决赛结果(欧冠四分之一决赛)

    本赛季欧冠4强已经出炉,拜仁、莱比锡、巴黎、里昂进入半决赛。1/4决赛的4场单场淘汰赛,着实刺激,我们看看创造了哪些纪录。     1、29年来头一遭,欧冠四强首次没有英超意甲西甲球队。上一次出现这种情况还得追溯至欧冠改制前的1990/91赛季,当时的欧冠四强分别是拜仁慕尼黑、马赛、莫斯科斯巴达和贝尔格莱德红星。 2、史上首次!两支法甲球…

    2021-12-28