关于DiskFileUpload的杂谈

关于DiskFileUpload的杂谈

杂谈的背景

有个在运行的老系统,jdk仍然在使用1.4的版本,出现了一个bug,就是在上传文件的过程中,会在windows的临时文件夹中生成.tmp的临时文件,并且系统没有自动删除。

DiskFileUpload

是commons-fileupload-1.2.1.jar。目前显示已被弃用,但是由于系统的老旧,不能使用其替代品,只能深入去了解这个问题。
这个类的作用是,当前台页面的提交方式是post,enctype="multipart/form-data"时使用,由于提交方式是multipart/form-data时,普通的request无法获取提交的参数,故使用DiskFileUpload来获取表单参数以及上传的文件流。
使用DiskFileUpload.parseRequest(request),可以将表单提交的参数以及文件放在list中返回,list中的对象是FileItem,而通过FileItem.isFormField()方法来判断是否是表单参数,通过getInputStream获取文件流。
这里坑是在运行parseRequest(request)方法时,会判断文件的大小如果超出一定值后,这里的一定值是通过setSizeThreshold(1024);来进行设置的,因为java虚拟机的空间是有限的,所以这个值必须按照实际空间进行设置,否则在上传大文件时就会抛出内存溢出的异常。超出这个值后会在操作系统的临时目录生成临时文件,临时文件大小同上传的文件大小。并且临时文件会被java进程占用,对应的File实例被垃圾回收后,才可被删除。
目前想到的解决办法是可以设置临时文件的存放文件夹,调用setRepositoryPath(“c:\temp”);这样会让临时文件存放在这个文件夹下,后续自己写代码删除。
但是从网上查到有可以删除生成临时文件的方法,后续进行验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值