此栏目主要用于阅读英文APIdoc时,对其进行翻译。
https://commons.apache.org/proper/commons-fileupload/apidocs/index.html
这个执行创建FileItem实例,保持他们的内容,或是在内存,对于较小的items,保存在硬盘上一个临时文件,对于大的items。大小的阈值,大于多少会被保存到硬盘,是可以设置的,临时文件的路径也可以设置。
如果没有设置,默认值如下:
1.size阈值为10KB
2.路径(原文仓库)是系统默认文件夹,从System.getProperty("java.io.tmpdir")中获取。
注意:在默认临时文件夹中创建的文件有可预测的名字。这意味着,一个本地的,对这个文件夹有写入权限的攻击者,可以发动一个TOUTOC()攻击,一堆比较费的话,就是强调要把临时文件放到不会被公开写入的地方。在servlet容器这,上下文context的javax.servlet.context.tempdir也许会被使用。
这些为了文件而创建的临时文件,之后应该被删除。实现这个的最好方式是FileCleaningTracker,你可以在DiskFileItemFactory中设置它。然而,一旦你采用了它,你必须考虑以下:一旦临时文件不再被需要,它们会被自动删除。(更精确的说,一旦对应的File实例被垃圾回收后)。这是被所谓的reaper(收割者)线程搞掉的,当文件被尾随时,这些收割者会被FileCleaningTracker 叫起来干活或者打晕。终结掉这些线程是make sense的,比如你结束了你的web应用。这个去看user guide中的资源清理一节。
属性
- DEFAULT_SIZE_THRESHOLD
构造器
1.不带任何参数(就是用上述的默认值了)
2.两个参数(int型的size,单位byte,File型,临时文件的存放处)
方法
- getRepository 无输入,返回存放临时文件的一个File类
- setRepository 与上方法相反
- SizeThreshold的get & set
- createItem 输入:
String型 表单属性的名字
String型 表单属性的文本类型
boolean型 plain form field(译者注:是表单中enctype的一种)的话就是true了
String型 上传文件的名字,如果有的话,有浏览器或是其他客户端提供
返回:一个FileItem
5.getFileCleaningTracker 得到现在这个DiskFileItemFactory的FileCleaningTracker。
6.setFileCleaningTracker 跟上面这个相反,就是给这个工程类加一个cleaning tracker。
实现接口:FileItemFactory