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 閱讀(1480) 評論(0)  編輯  收藏 所屬分類: Strut1
          項目中需要上傳一些較大的文件,都是一些壓縮備份文件,動不動就幾百M。系統(tǒng)框架SSH,必然用Struts。而Struts提供了 FormFile類來上傳文件。起初一切正常,上傳下載的都沒問題,但過了一段時間后客戶提出大于300M的文件上傳不上去。測試后發(fā)現(xiàn)果真如此,但是后臺并不報錯,直接返回下面的forward了。因為是初次使用,下面就是我一小天行走的過程。

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

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


          但是每次使用uploadList.size();時獲取到得都是0,根本傳布了。我更暈了。。。

          我再次仔細的對比demo和系統(tǒng),最后發(fā)現(xiàn)demo中沒有使用Struts的FormBean,會不會是這里的問題?于是我將demo中也增加了 FormBean類,標簽都用上了Struts的標簽,這次果然demo也失效了。。。終于被我發(fā)現(xiàn),都是FormBean的問題,但現(xiàn)在我又不可能舍棄 FormBean,因為不僅僅是附件,還有別的很重要的一些屬性,代碼都寫好了,不可能大范圍修改,那咋辦?

          為什么fileupload可以傳那么大,而你struts卻傳不上大于300M的文件?再次搜索,終于發(fā)現(xiàn)原因,Struts在寫 FormFile類時借助的是fileupload中的API,設置的默認大小為250M,難怪傳不上去!如何設置更大一些或更小一些呢?這樣:

          在Struts配置文件的mapping標簽后加上

          <controller maxFileSize="1024M" />


          看到這個小標簽頁不用解釋什么了吧!我設置了1G,現(xiàn)在傳只要小于1G的附件都沒問題了!

          主站蜘蛛池模板: 绥芬河市| 柳林县| 柘荣县| 青田县| 剑阁县| 阿瓦提县| 山阴县| 兴隆县| 长治县| 清苑县| 平罗县| 南召县| 行唐县| 曲靖市| 汪清县| 潞西市| 洪洞县| 佛冈县| 秦皇岛市| 海丰县| 宽城| 济宁市| 策勒县| 怀宁县| 万安县| 康平县| 北流市| 志丹县| 阜城县| 黑山县| 盘山县| 蚌埠市| 瑞金市| 缙云县| 涟水县| 右玉县| 华阴市| 博爱县| 大宁县| 阳江市| 吉林市|