2011-01-27 10 views
4

JSP/Struts2でファイルアップロードを実装しようとしていますが、私は奇妙な動作に注意しました。 私はエラーをスロー1メガバイトを超える画像ファイルや画像以外の、それはかなりうまく機能1メガバイトファイル全体をアップロードせずにStruts2ファイルの最大サイズをアップロードする

<action name="massInsert" class="massInsertAction"> 
    <interceptor-ref name="fileUpload"> 
     <param name="allowedTypes"> 
      image/png,image/gif,image/jpeg 
     </param> 
     <param name="maximumSize">1000000</param> 
    </interceptor-ref> 
    <interceptor-ref name="defaultStack"/> 

    <result name="success">/WEB-INF/jsp/massInsert/massInsert.jsp</result> 
    <result name="validationError">/WEB-INF/jsp/massInsert/massInsert.jsp</result> 
</action> 

にファイルサイズを制限するために、そのようstruts.xmlで自分の行動を宣言しました。 唯一の問題は、大きすぎるファイルが削除される前にサーバの一時フォルダに完全にアップロードされていることです。

限界に達するとすぐにアップロードを停止する方法はありますか?

編集:要求はエラーがスローされ、すべてが停止している次の行に設定された最大の上に行くとき クォータニオンのソリューションは、動作します。ファイルがディスク

<constant name="struts.multipart.maxSize" value="1000000" /> 

答えて

4

に書かれている誰もが、個々のファイルに関係している2つのファイル・サイズ・パラメータはありません最大マルチパートファイルサイズは他のサイズを。これは、あなたが望むならばファイルの配列を受け取ることができるからです(単にファイルからファイル[]へ簡単にセッターのタイプを変更する)、struts.multipart.maxSizeは10MBに設定され、ファイルサイズはmaximumSize)が1 MBに設定されている場合、10個の1 MBファイルを受信できるはずです。そのため、バッファは10 MBまで拡張する必要があります。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
    <constant name="struts.multipart.maxSize" value="1000000" /> 

    <action name="doUpload" class="com.example.UploadAction"> 
    <interceptor-ref name="basicStack"/> 
    <interceptor-ref name="fileUpload"> 
     <param name="maximumSize">500000</param> 
    </interceptor-ref> 
    <interceptor-ref name="validation"/> 
    <interceptor-ref name="workflow"/> 

    <result name="success">good_result.jsp</result> 
    </action> 
</struts> 

出典:https://cwiki.apache.org/confluence/display/WW/File+Upload#FileUpload-FileSizeLimits

関連する問題