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

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

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


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

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

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

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

          <controller maxFileSize="1024M" />


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

          主站蜘蛛池模板: 启东市| 阿拉善左旗| 西昌市| 上饶市| 新疆| 工布江达县| 怀仁县| 芦溪县| 南平市| 长泰县| 潞城市| 华亭县| 南雄市| 清流县| 府谷县| 鄢陵县| 游戏| 宁明县| 故城县| 巴中市| 梅河口市| 华容县| 体育| 五寨县| 大悟县| 临潭县| 博乐市| 维西| 桐庐县| 蓬莱市| 麻栗坡县| 咸阳市| 区。| 阿合奇县| 正宁县| 余庆县| 河池市| 盐源县| 株洲市| 邹平县| 盱眙县|