首页技术文章正文

ServletFileUpload类方法有哪些?

更新时间:2021-10-28 来源:黑马程序员 浏览量:

IT培训班

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,这时,上传组件将采用系统默认的字符编码。获取系统默认字符编码的方式如下所示:

System.getProperty("file.encoding")
分享到:
在线咨询 我要报名
和我们在线交谈!