IT培训-高端面授IT培训机构
云和教育:云和数据集团高端IT职业教育品牌
  • 国家级
    全民数字素养与技能培训基地
  • 河南省
    第一批产教融合型企业建设培育单位
  • 郑州市
    数字技能人才(码农)培养评价联盟
当前位置:
首页IT问答正文

什么是ServletFileUpload类方法?

  • 发布时间:
    2022-12-03
  • 版权所有:
    云和教育
  • 分享:

ServletFileUpload类

ServletFileUpload类是Apache组件处理文件上传的核心高级类,通过使用parseRequest(HttpServletRequest)方法可以将HTML中每个表单提交的数据封装成个Fileltem对象,然后以List列表的形式返回。接下来,首先看一下ServletFileUpload类的构造方法如下所示:

 

ServletFileUpload()

构造一个未初始化的ServletFileUpload实例对象

 

ServletFileUpload(FileItemFactory fileItemFactory)

根据参数指定的FileItemFactory对象创建一个ServletFileUpload对象

由于在文件上传过程中,FileltemFactory类必须设置,因此,在使用第一个构造方法创建ServletFileUpload对象时,首先需要在解析请求之前调用setFileltemFactory()方法设置fileltemFactory属性。

了解了ServletFileUpload对象的创建,接下来,学习一下ServletFileUpload类的方法,具体如下。

 

1. setSizeMax(long sizeMax)和getSizeMax()方法

setSizeMax()方法继承自FileUploadBase类,用于设置请求消息实体内容(即所有上数据)的最大尺寸限制,以防止客户端恶意上传超大文件来浪费服务器端的存储空间。其中,参数sizeMax以字节为单位。

另外,对应的getSizeMax()方法用于读取请求消息实体内容所允许的最大值。

 

2.setFileSizeMax(long fileSizeMax)方法

setFileSizeMax()方法继承自FileUploadBase类,用于设置单个上传文件的最大尺限制,以防止客户端恶意上传超大文件来浪费服务器端的存储空间。其中,参数fileSizeMax是以字节为单位。

另外,对应的getFileSizeMax()方法用于获取单个上传文件所允许的最大值。

 

3. parseRequest(javax.servlet.http.HttpServletRequest req)

parseRequest()方法是ServletFileUpload类的重要方法,它是对HTTP请求消息体内容进行解析的入口。它解析出FORM表单中的每个字段的数据,并将它们分别包装成独立的Fileltem对象,然后将这些Fileltem对象加入进一个 List类型的集合对象中返回。

 

4. getltemlterator(HttpServletRequest request)

getItemIterator()方法和parseRequest()方法基本相同。但是getItemIterator()方法返回的是一个迭代器,该迭代器中保存的不是Fileltem对象,而是FileltemStream对象果希望进一步提高性能,可以采用getItemIterator()方法,直接获得每一个文件项的数据输人流,做底层处理;如果性能不是问题,希望代码简单,则采用parseRequest()方法即可。

 

5. isMultipartContent(HttpServletRequest req)

isMultipartContent()方法用于判断请求消息中的内容是否是multipart/form-data类型,如果是,则返回true,否则返回false。需要注意的是,isMultipartContent()方法是静态方法,不用创建ServletFileUpload类的实例对象即可被调用。

 

6. getFileltemFactory()和setFileltemFactory(FileltemFactory factory)

这两个方法继承自FileUpload类,分别用于读取和设置fileltemFactory属性。

 

7. setHeaderEncoding(String encoding)方法和getHeaderEncoding()方法

这两个方法继承自FileUploadBase类,用于设置和读取字符编码。需要注意的是,如果没有使用setHeaderEncoding()设置字符编码,则getHeaderEncoding()方法返回null,上传组件会采用HttDServletRequest设置的字符编码。但是,如果HttpServletRequest的字符编码和为null,这时,上传组件将采用系统默认的字符编码。