winder

          DB&JAVA
          posts - 2, comments - 6, trackbacks - 0, articles - 11
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          使用Struts2上傳文件,其實使用的是apache的 commons-fileupload-1.1.jar

          在實際使用的過程中,配置了fileUpload攔截器并不能過濾上傳的文件類型,只能處理大小過濾


           

          1             <interceptor-ref name="defaultStack">
          2                   
          <!-- 配置允許上傳的文件類型,多個用","分隔 -->
          3                   
          <param name="fileUpload.allowedTypes">
          4                     image/bmp,image/png,image/gif,image/jpeg,image/jpg ,image/x-png
          5                   
          </param>
          6                   
          <!-- 配置允許上傳的文件大小,單位字節 -->
          7                   
          <param name="fileUpload.maximumSize">102400</param>
          8             
          </interceptor-ref>

           


          如果不使用缺省的攔截器,則action中的屬性不能正確賦值。而使用后,攔截類型不起作用。后來在網上多方查找,隱隱角色是缺省攔截器的原有。網上說缺省攔截器中已經包含了fileUpload攔截器。那么這樣配置就是做了兩次攔截。通過查找資料和嘗試,如下配置的情況下可以實現文件類型攔截。


           

          1             <interceptor-ref name="defaultStack">
          2                   
          <!-- 配置允許上傳的文件類型,多個用","分隔 -->
          3                   
          <param name="fileUpload.allowedTypes">
          4                     image/bmp,image/png,image/gif,image/jpeg,image/jpg ,image/x-png, image/pjpeg
          5                   
          </param>
          6                   
          <!-- 配置允許上傳的文件大小,單位字節 -->
          7                   
          <param name="fileUpload.maximumSize">102400</param>
          8             
          </interceptor-ref>

           

           

           


          評論

          # re: Struts2 文件上傳 文件類型 大小過濾 不起作用?  回復  更多評論   

          2011-01-04 23:22 by King_wangyao
          設置Struts2文件上傳的類型和大小:

          在struts.xml中的Action中配置如下:

          <!-- 國際化文件 -->
          <constant name="struts.custom.i18n.resources" value="message"></constant>

          <action name="upload" class="com.mengya.action.UploadAction">
          <result name="success">/result.jsp</result>
          <!-- 若上傳的文件不符合要求則返回input -->
          <result name="input">/index.jsp</result>

          <!-- 限制上傳的文件的大小,在struts-default.xml中我們可能找到一個fileUpload攔截器 -->
          <interceptor-ref name="fileUpload">
          <!-- 單位為字節,這里為400k 這里的大小是指每個文件上傳的大小,若多個文件上傳指每一個文件的大小 -->
          <param name="maximumSize">409600</param>
          <!-- 指定文件上傳的類型,在X:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\web.xml中Tomcat提定所有文件類型 -->
          <!-- word類型 -->
          <param name="allowedTypes">
          application/msword
          </param>
          </interceptor-ref>
          <!-- 加上默認攔截器 -->
          <interceptor-ref name="defaultStack"></interceptor-ref>
          </action>

          在message.properties文件中加上客戶化的文件上傳提示
          #文件上傳類型不允許
          struts.messages.error.content.type.not.allowed = \u4e0a\u4f20\u6587\u4ef6\u7c7b\u578b\u4e0d\u6b63\u786e\uff0c\u8bf7\u91cd\u8bd5\uff01
          #文件上傳的大小不允許
          struts.messages.error.file.too.large = \u4e0a\u4f20\u6587\u4ef6\u592a\u5927\uff01
          #這些信息可以在struts2-core-2.1.6.jar下面的struts-message.properties文件里找到
          主站蜘蛛池模板: 抚松县| 台北县| 海淀区| 新化县| 昭平县| 慈溪市| 梁河县| 文化| 方正县| 凭祥市| 沿河| 冀州市| 凉山| 新疆| 洛宁县| 松潘县| 吉隆县| 信宜市| 胶州市| 陈巴尔虎旗| 依兰县| 策勒县| 习水县| 响水县| 隆德县| 瑞金市| 中西区| 蓬莱市| 枣强县| 电白县| 松阳县| 邻水| 蛟河市| 吉首市| 金阳县| 五峰| 旌德县| 万年县| 许昌县| 商城县| 伊川县|