来自:http://www.iteye.com/topic/212566
前一段时间刚来公司,看到一个项目中以前有人写的struts代码。是使用了FormFile来处理关于文件上传的模块。但是用力一段时间后,发现出问题 了。写完的这个模块,上传文件是没有问题的,但是当服务器的空间较小的时候,穿一个比较大的文件就出问题了,文件还没有上传完,就抛出一个错误的页面,报 告上传模块出了问题,而且是Tomcat默认的出错页面。
于是想办法,修改,查看源代码,发现原来写这段代码的人是默认等文件上传完以后进入Action了才判断文件大小是否超出了限制。
但是,默认配置下使用struts的FormFile比较特殊,FormFile是struts包对外的一个接口,而且 org.apache.struts.upload包是使用的commons-fileupload-1.0进行的封装。如果使用了它来实现文件上传的功 能,则
必须是FormFile对象在被初始化以后才能使用,那什么时候它才是被初始化的呢?
答案是:
在进入Action之前就已经初始化好了!
因此,原先的设计:在Action中判断文件大小是根本不能在上传过程中起到提示作用的,因为这时候文件已经上传完了。而且这个设计还有一个确定 就是不能捕获上传过程
因此,原先的设计:在Action中判断文件大小是根本不能在上传过程中起到提示作用的,因为这时候文件已经上传完了。而且这个设计还有一个确定 就是不能捕获上传过程