winder

          DB&JAVA
          posts - 2, comments - 6, trackbacks - 0, articles - 11
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

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


           

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

           


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


           

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

           

           

           


          評(píng)論

          # re: Struts2 文件上傳 文件類型 大小過(guò)濾 不起作用?  回復(fù)  更多評(píng)論   

          2011-01-04 23:22 by King_wangyao
          設(shè)置Struts2文件上傳的類型和大?。?

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

          <!-- 國(guó)際化文件 -->
          <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中我們可能找到一個(gè)fileUpload攔截器 -->
          <interceptor-ref name="fileUpload">
          <!-- 單位為字節(jié),這里為400k 這里的大小是指每個(gè)文件上傳的大小,若多個(gè)文件上傳指每一個(gè)文件的大小 -->
          <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>
          <!-- 加上默認(rèn)攔截器 -->
          <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文件里找到
          主站蜘蛛池模板: 永顺县| 台安县| 嘉兴市| 威海市| 武安市| 齐齐哈尔市| 靖江市| 托里县| 永和县| 楚雄市| 津南区| 旬邑县| 崇信县| 道真| 咸阳市| 洛川县| 新邵县| 惠安县| 土默特左旗| 团风县| 鲁山县| 游戏| 高州市| 桐庐县| 吴忠市| 恩施市| 灵台县| 邵阳县| 湖北省| 靖远县| 浦城县| 雅安市| 密云县| 山阴县| 长汀县| 驻马店市| 大渡口区| 华亭县| 洛隆县| 中卫市| 那曲县|