您现在的位置: 365建站网 > 365文章 > 文件上传 探究

文件上传 探究

文章来源:365jz.com     点击数:121    更新时间:2009-09-17 10:25   参与评论

用过webwork 的人都知道文件上传在组件的帮助下,太简单了,然而很少有人会发现这种情况:

当form表单中包含type不是file的标签的时候也会生成一个临时文件,而且当type为file对应的文件临时文件被删除后,这个文件依然存在。

这个是为什么呢?难道是Apache的童孩疏忽了,非也非也。

首先,我们来看下生成临时文件的代码,这些代码在org.apache.commons.fileupload.disk.DiskFileItem

草草看上去,这段代码只是对请求中的所有参数都建立一个临时文件,而且id都不一样。

莫非不信言中?这是一个BUG?

不然,看倒数第二行代码

这里就是精华所在,那它(org.apache.commons.io.FileCleaner )到底是干什么的?

先来看下这段代码的文档:

 * Keeps track of files awaiting deletion, and deletes them when an associated
 * marker object is reclaimed by the garbage collector.
 * <p>
 * This utility creates a background thread to handle file deletion.
 * Each file to be deleted is registered with a handler object.
 * When the handler object is garbage collected, the file is deleted.
 * <p>

 

这个类追踪了等待删除的文件,当一个关联的标记对象被垃圾回收器重新分配的时候(也就是一个对象失去引用的时候),这个文件被删除。这个工具创建了一个后台线程来处理文件的删除。每个要删除的文件会有一个句柄对象。当句柄对象被回收的时候,文件被删除。ps:这个线程是守护线程,关于什么是守护线程,请看本BLOG其他章节。

 

所以Apache的童孩想的还是很周到的,只是删除这些文件并不是实时的,只能耐性等待哈哈。

敬请拍砖!!!!!

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (121人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号