sizeMax):设置请求信息实体内容的最大允许的字节数
★ public List parseRequest(HttpServletRequest req):
解析form表单中的每个字符的数据,返回一个FileItem对象的集合。
★ public static final boolean
isMultipartConent(HttpServletRequest req):
判断请求信息中的内容是否是“multipart/form-data”类型
★ public void setHeaderEncoding(String
encoding):设置转换时所使用的字符集编码
2. FileItem接口
FileItem是一个接口,用于封装单个表单字段元素的数据,一个表单字段元素对应一个FileItem对象,在应用程序中使用的是接口的实现类DiskFileItem类。FileItem接口提供的常用方法如下所示:
★ public boolean isFormFileld():
判断FileItem对象封装的数据类型。普通表单字段返回true,文件表单字段返回false
★ public String getName():获得文件上传字段中的文件名。普通表单字段返回null。
★ public String getFieldName():返回表单字段元素的name属性值。
★ public void write(File
file):将FileItem对象中保存的主体内容保存到指定的文件中。
★ public String getString :
将FileItem对象中保存的主体内容以一个字符串返回。其重载方法public String getString
(String encoding)中的参数用指定的字符集编码方式
★ public long getSize():返回单个上传文件的字节数
3.FileItemFactory接口与实现类
servletFileUpload对象的创建需要依赖于FileItemFactory工厂,将获得的上传文件FileItem对象保存至服务器硬盘。FileItemFactory接口的实现是DiskFileItemFactory,该类的常用方法如下:
★ public void setSizeThreshold(int
sizeThreshold):设置内存缓冲区的大小
★ public void setRepositoryPath(String
path):设置临时文件存放的目录。
五。在JSP中使用Commons-FileUpload组件实现文件上传的功能
以( 三) 中的页面作为文件上传页面,将表单提交到doUpload.jsp中
上面的代码完成了一个文件上传的功能,现在对上面的代码进行逐一分析:
1.在JSP文件中使用page指令导入Commons-FileUpload组件所需的类。
2.判断请求信息中的内容是否是multipart类型,如果是则进行处理。
3.通过FileItemFactory工厂对象实例化ServletFileUpload对象。
4.调用ParseRequest()将表单中字段解析成FileItem对象的集合。
5.通过迭代依次处理每个文件,如果是普通字段,通过getString()方法得到相应编导字符的值,该值与表单字段中的“name”属性对应。如果是文件字段,则通过File的构造方法构建一个指定路径名和文件名的文件,并通过FileItem对象的write()方法将上传文件的内容保存到文件中。
六。控制文件上传的类型
代码如下:
在上面代码中,用到了Arrays类,此类包含用于操作数组(如排序和搜索)的各种方法,通过Arrays类的asList()方法创建固定长度的集合,也就是得到允许文件类型的集合,然后通过集合的contains()方法匹配上传文件的后缀名,来判断文件类型是否在允许范围内。
七。控制文件上传的大小:
运行代码,如果提交的文件大小超出了设置要求,那么系统会返回错误信息。
在上面的代码中:创建临时文件目录路径,通过DiskFileItemFactory对象的setSizeThreshold()方法设置缓冲区大小,当上传文件大小超过缓冲区大小,则临时存储在通过DiskFileItemFactory对象的setRepository()
方法设置的临时文件目录路径中。同时通过ServletFileUpload对象的setSizeMax()限制了单个上传文件的字节数,如果超出设置的字节数,则会抛出一个FileUploadBase.SizeLimitExceededException类型的异常。并通过异常处理提示错误信息。
八。通过上面的代码,我们实现了在文件上传过程中对于上传文件类型,大小的设置,只允许向服务器上传指定类型的文件,使服务器更安全,避免服务器被破坏。控制上传文件的大小,节约服务器的空间,有效避免服务器的崩溃。