起初,我開(kāi)始到處搜尋網(wǎng)上的上傳文件下載,很多人用的都是apache得commons-fileupload.jar這個(gè)組件,而且代碼都貼出了,我隨便下了一個(gè)小demo,屢試不爽,別說(shuō)300,500M也能傳上去,而且也用了Struts,我開(kāi)始犯暈。我試著將我的環(huán)境與demo得環(huán)境代碼盡量相似,至少主要代碼應(yīng)該差不多。我將目前系統(tǒng)中的上傳附件代碼改成了demo中的:


但是每次使用uploadList.size();時(shí)獲取到得都是0,根本傳布了。我更暈了。。。
我再次仔細(xì)的對(duì)比demo和系統(tǒng),最后發(fā)現(xiàn)demo中沒(méi)有使用Struts的FormBean,會(huì)不會(huì)是這里的問(wèn)題?于是我將demo中也增加了 FormBean類,標(biāo)簽都用上了Struts的標(biāo)簽,這次果然demo也失效了。。。終于被我發(fā)現(xiàn),都是FormBean的問(wèn)題,但現(xiàn)在我又不可能舍棄 FormBean,因?yàn)椴粌H僅是附件,還有別的很重要的一些屬性,代碼都寫好了,不可能大范圍修改,那咋辦?
為什么fileupload可以傳那么大,而你struts卻傳不上大于300M的文件?再次搜索,終于發(fā)現(xiàn)原因,Struts在寫 FormFile類時(shí)借助的是fileupload中的API,設(shè)置的默認(rèn)大小為250M,難怪傳不上去!如何設(shè)置更大一些或更小一些呢?這樣:
在Struts配置文件的mapping標(biāo)簽后加上

看到這個(gè)小標(biāo)簽頁(yè)不用解釋什么了吧!我設(shè)置了1G,現(xiàn)在傳只要小于1G的附件都沒(méi)問(wèn)題了!