当前位置: 首页 > news >正文

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 下载地址:FileUpload – Home
  • commons-io-xx.jar 下载地址:Commons IO – Commons IO Overview
  • 下面我们介绍一下 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)设置临时文件存放的目录

相关文章:

  • 网站建设岗位/pc网站优化排名
  • 昭通市公安局网站是谁做的/太原网络推广公司哪家好
  • 扬州商城网站制作/今日国际新闻摘抄
  • wordpress雪人主题2.0/下载百度网盘app最新版
  • 假发的出口做b2c网站/小程序开发系统
  • 摄影网站做画册/免费搭建个人网站
  • uImage的制作过程详解
  • OkHttp搞定Http请求
  • 分片集群中的分片集合
  • vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
  • 接口幂-全面详解(学习总结---从入门到深化)
  • 第6部分 单区域OSPF
  • 智能优化算法期末复习(更新ing)
  • 【无锁队列】无锁CAS_无锁队列
  • 数据结构 树练习题
  • C++11闭包函数的几种实现方法
  • 计算机毕业论文java毕业设计选题源代码
  • ECMAScript新特性