ice world

          There is nothing too difficult if you put your heart into it.
          posts - 104, comments - 103, trackbacks - 0, articles - 0

          Struts1的FormFile上傳文件用后感

          Posted on 2011-04-16 14:20 IceWee 閱讀(1488) 評(píng)論(0)  編輯  收藏 所屬分類: Strut1
          項(xiàng)目中需要上傳一些較大的文件,都是一些壓縮備份文件,動(dòng)不動(dòng)就幾百M(fèi)。系統(tǒng)框架SSH,必然用Struts。而Struts提供了 FormFile類來(lái)上傳文件。起初一切正常,上傳下載的都沒(méi)問(wèn)題,但過(guò)了一段時(shí)間后客戶提出大于300M的文件上傳不上去。測(cè)試后發(fā)現(xiàn)果真如此,但是后臺(tái)并不報(bào)錯(cuò),直接返回下面的forward了。因?yàn)槭浅醮问褂茫旅婢褪俏乙恍√煨凶叩倪^(guò)程。

          起初,我開(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中的:

          DiskFileUpload upload = new DiskFileUpload();
          List uploadList 
          = upload.parseRequest(request);


          但是每次使用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)簽后加上

          <controller maxFileSize="1024M" />


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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 新河县| 沈丘县| 旺苍县| 南郑县| 马山县| 巴彦淖尔市| 张掖市| 临武县| 德格县| 右玉县| 南澳县| 辰溪县| 武穴市| 郓城县| 南靖县| 怀宁县| 南和县| 奇台县| 佛山市| 进贤县| 巴林右旗| 佛学| 乌鲁木齐县| 蒙自县| 盐城市| 岐山县| 延津县| 阿瓦提县| 公安县| 屏东市| 修武县| 呈贡县| 额尔古纳市| 岫岩| 邳州市| 镇平县| 台山市| 大渡口区| 察雅县| 东丰县| 翁牛特旗|