java有什么方法判断压缩文件解压后的实际大小,防止文件攻击
最近在做一个项目遇到一个问题,每个用户都会上传一个压缩文件,并且给每个用户分配的目录大小只有2G,所以问题是要先知道用户上传的压缩文件大小,解压后是不是超过了2G,超过就不允许上传,在网上搜索了下,也没找到合适的方法,看了一个别人给的案例是使用java自带的java.util.zip实现的,但是校验bz2这种类型的压缩文件大小时候,总是报错:
java.util.zip.ZipException: error in opening zip file,一直没有找到解决方法,所以来论坛问问,请高人指点下
------解决思路----------------------上传的文件先放到临时目录,解压后不超过2G才认为OK,否则直接删除。
------解决思路----------------------首先,这种方式不是很好,要是人家zip加密了怎么办,zip本身是不代解压后的信息的(包括文件名和大小)
其次,看你的异常,你把jdk版本发来,有些jdk并不能很好的支持zip,再有把你的代码贴出来,看看你的用法是不是有问题。
------解决思路----------------------小哥,人家那是bz2,跟zip揍是两个格式,java.util.zip根本不支持。java2s.com上的代码只能打开zip文件。楼主这个问题,只能去试试Apache Commons Compress: http://commons.apache.org/proper/commons-compress/
或者干脆限制bz2上传!