FileItem类用来封装单个表单字段元素的数据,一个表单字段元素对应一个FileItem对象,通过调用FileItem对象的方法可以获得相关表单字段元素的数据。FileItem是一个接口,在应用程序中使用的实际上是该接口一个实现类,该实现类的名称并不重要,程序可以采用FileItem接口类型来对它进行引用和访问,为了便于讲解,这里将FileItem实现类称之为FileItem类。FileItem类还实现了Serializable接口,以支持序列化操作。

对于“multipart/form-data”类型的FORM表单,浏览器上传的实体内容中的每个表单字段元素的数据之间用字段分隔界线进行分割,两个分隔界线间的内容称为一个分区,每个分区中的内容可以被看作两部分,一部分是对表单字段元素进行描述的描述头,另外一部是表单字段元素的主体内容,如图1.3所示。 图 1.3

主体部分有两种可能性,要么是用户填写的表单内容,要么是文件内容。FileItem类对象实际上就是对图1.3中的一个分区的数据进行封装的对象,它内部用了两个成员变量来分别存储描述头和主体内容,其中保存主体内容的变量是一个输出流类型的对象。当主体内容的大小小于

DiskFileUpload.setSizeThreshold方法设置的临界值大小时,这个流对象关联到一片内存,主体内容将会被保存在内存中。当主体内容的数据超过

DiskFileUpload.setSizeThreshold方法设置的临界值大小时,这个流对象关联到硬盘上的一个临时文件,主体内容将被保存到该临时文件中。临时文件的存储目录由DiskFileUpload.setRepositoryPath方法设置,临时文件名的格式为“upload_00000005(八位或八位以上的数字).tmp”这种形式,FileItem类内部提供了维护临时文件名中的数值不重复的机制,以保证了临时文件名的唯一性。当应用程序将主体内容保存到一个指定的文件中时,或者在FileItem对象被垃圾回收器回收时,或者Java虚拟机结束时,Apache文件上传组件都会尝试删除临时文件,以尽量保证临时文件能被及时清除。

下面介绍FileItem类中的几个常用的方法:

① isFormField方法

isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,如果是普通表单字段则返回true,否则返回false。该方法的完整语法定义如下:

public boolean isFormField()

②. getName方法

getName方法用于获得文件上传字段中的文件名,对于图1.3中的第三个分区所示的描述头,getName方法返回的结果为字符串“C:\bg.gif”。如果FileItem类对象对应的是普通表单字段,getName方法将返回null。即使用户没有通过网页表单中的文件字段传递任何文件,但只要设置了文件表单字段的name属性,浏览器也会将文件字段的信息传递给服务器,只是文件名和文件内容部分都为空,但这个表单字段仍然对应一个FileItem对象,此时,getName方法返回结

第3/5页

果为空字符串"",读者在调用Apache文件上传组件时要注意考虑这个情况。getName方法的完整语法定义如下:

public String getName()

注意:如果用户使用Windows系统上传文件,浏览器将传递该文件的完整路径,如果用户使用Linux或者Unix系统上传文件,浏览器将只传递该文件的名称部分。

③.getFieldName方法

getFieldName方法用于返回表单字段元素的name属性值,也就是返回图1.3中的各个描述头部分中的name属性值,例如“name=p1”中的“p1”。getFieldName方法的完整语法定义如下:

public String getFieldName()

④. write方法

write方法用于将FileItem对象中保存的主体内容保存到某个指定的文件中。如果FileItem对象中的主体内容是保存在某个临时文件中,该方法顺利完成后,临时文件有可能会被清除。该方法也可将普通表单字段内容写入到一个文件中,但它主要用途是将上传的文件内容保存在本地文件系统中。其完整语法定义如下:

public void write(File file)

⑤.getString方法

getString方法用于将FileItem对象中保存的主体内容作为一个字符串返回,它有两个重载的定义形式:

public java.lang.String getString()

public java.lang.String getString(java.lang.String encoding) throws java.io.UnsupportedEncodingException

前者使用缺省的字符集编码将主体内容转换成字符串,后者使用参数指定的字符集编码将主体内容转换成字符串。如果在读取普通表单字段元素的内容时出现了中文乱码现象,请调用第二个getString方法,并为之传递正确的字符集编码名称。

⑥. getContentType方法

getContentType 方法用于获得上传文件的类型,对于图1.3中的第三个分区所示的描述头,getContentType方法返回的结果为字符串“image/gif”,即

“Content-Type”字段的值部分。如果FileItem类对象对应的是普通表单字段,该方法将返回null。getContentType 方法的完整语法定义如下:

public String getContentType()

⑦. isInMemory方法

isInMemory方法用来判断FileItem类对象封装的主体内容是存储在内存中,还是存储在临时文件中,如果存储在内存中则返回true,否则返回false。其完整语法定义如下:

public boolean isInMemory()

⑧. delete方法

delete方法用来清空FileItem类对象中存放的主体内容,如果主体内容被保存在临时文件中,delete方法将删除该临时文件。尽管Apache组件使用了多种方式来尽量及时清理临时文件,但系统出现异常时,仍有可能造成有的临时文件被永久保存在了硬盘中。在有些情况下,可以调用这个方法来及时删除临时文件。

其完整语法定义如下:

public void delete()

关于FileItem相关推荐

  1. 使用FileItem获取文件名时注意事项

    获取文件名的时候,要注意对不同浏览器的处理,下面给出方法参考 FileItem类的常用方法: 1.  boolean isFormField() isFormField方法用于判断FileItem类对 ...

  2. FileItem API详解及演示

    FileItem1.isFormField用于判断是否是上传组件.如果是<input type="file">返回的就是false,否则返回true.2.getFiel ...

  3. fileitem方法_FileItem的常用方法

    下面介绍FileItem类中的几个常用的方法:1. isFormField方法isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,如果 ...

  4. fileitem方法_FileItem类的常用方法(关于文件上传的)

    1.boolean  isFormField().isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段.如果是普通文本表单字段,返回一个tr ...

  5. FileItem类的常用方法

    FileItem类的常用方法: 1.  boolean isFormField() isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果 ...

  6. FileItem 出现部分中文乱码解决办法

    首先要进行两处的修改: 第一:如果你使用了上传文件的包, 如:ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setHeader ...

  7. File、FileItem、MultipartFile三种文件类型转换

    这三种文件类型的中转都是File类型.主要实现MultipartFile转换为FileItem,过程:MultipartFile->File->FileItem. //MultipartF ...

  8. fileitem方法_FileItem类

    FileItem类主要是封装了一个File Item或者是FormItem,它的主要的方法如下,需要说明的是对于FormItem类型的,getName会得到null,getContentType会得到 ...

  9. 文件上传——FileItem接口方法

    1)getInputStream(): 以流的形式返回上传文件的数据内容. 2)getContentType(): 用于获得上传文件的类型,即表单字段元素描述头属性"Content-Type ...

  10. FormFile,FileItem对象的创建

    Class类提供了检索关于某个类的信息的方法,以及创建类实例的方法,在java中,每个对象都是某个类的一个实例,java为每个类都保存了一个固定的Class对象,其中包含了这个类的相关信息,这个Cla ...

最新文章

  1. Xen 工作原理与体系架构
  2. 理解Storm Metrics
  3. 弹性理论法研究桩基受力计算公式_桩基础沉降计算方法及相关的理论分析
  4. 【转】查看linux服务器的系统信息
  5. Bailian3719 学生信息用qsort排序【排序+字符串库函数】
  6. baseline如何发布_baseline-简单的字符串基线。-Dan Gass
  7. 基于Java的网上超市系统
  8. 队列(链式存储结构)
  9. (c++课程设计)简单车辆管理系统(有五种类型的车辆)代码+报告
  10. 2022-2028年中国位置大数据行业市场专项调查及投资前景分析报告
  11. kube-proxy 部署
  12. 马尔可夫不等式 Markov's inequality
  13. 多元线性回归模型的特征选择:全子集回归、逐步回归、交叉验证
  14. matlab的sinxx,用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01....
  15. 【技术类】【ArcGIS对国产卫星的支持2:高分一号卫星】篇6、影像专题产品生产
  16. 国产软件产品的一点看法
  17. ssd的smt_联合评测 | Intel Optane SSD 有效加速 SmartX 超融合在 Oracle 等场景下的系统性能...
  18. nexus学习 五、搭建阿里云代理
  19. vue使用 vueQr,html2canvas 实现批量生成二维码并合成海报
  20. 《权威指南》笔记 - 8.8函数式编程

热门文章

  1. iOS 适配全面屏iPhone X系列手机-Swift版
  2. 北医专科计算机试题及答案,计算机应用基础(北医网校).docx
  3. Multimodal Federated Learning
  4. java运行提示没有 org/slf4j/LoggerFactory 或者 log4j
  5. PHP 命名空间反斜杠
  6. IntelliJ IDEA代码提示快捷键以及自定义代码补全设置
  7. 获取输入汉字的中文读音
  8. 创业板 [注册制] 来了
  9. 2023.3.5 第十六次周报
  10. 几款著名的免费、开源网络监控软件