写真をアップロードできるアプリケーションがあります。アップロードする写真を選択するためのフォームを含む jsp ページがあります。
subir-foto.jsp
...
<s:form action="SubirFoto" method="post" enctype="multipart/form-data" theme="bootstrap">
<s:file name="foto" label="Foto" />
<s:submit value="Upload" align="center" />
</s:form>
...
このフォームでは、ユーザーが特定の種類のファイル (jpg、gif など) のみをアップロードでき、ユーザーが 2 MB を超えるサイズの写真をアップロードできないようにしたいと考えています。
struts.xml
<action
name="SubirFoto"
class="impl.redex.presentation.profile.upload.SubirFotosAction">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedTypes">
image/png,image/gif,image/jpeg,image/pjpeg
</param>
</interceptor-ref>
<interceptor-ref name="dentroStack"></interceptor-ref>
<result name="success">/WEB-INF/jsps/foto/foto-subida.jsp</result>
<result name="input">/WEB-INF/jsps/foto/subir-foto.jsp</result>
</action>
ファイルのアップロードは、1 つのことを除いて完全に機能します。要求された要件を満たしていれば、どんな写真でもアップロードできます。写真ではないファイル (たとえば、プレーン テキスト ファイル) をアップロードしようとすると、アプリケーションはglobal.properties
、jsp のフォームの入力で定義したエラーを表示します。
グローバル プロパティ
struts.messages.error.uploading - No se ha podido subir el fichero
struts.messages.error.file.too.large - El fichero es demasiado grande. El tamaño máximo es de 2MB.
struts.messages.error.content.type.not.allowed - Tipo de fichero no aceptado. Sólo es válido si la foto \
está en formato jpg/jpeg, gif o png.
2 MB を超える画像をアップロードしようとすると問題が発生します。アプリケーションはsubir-foto.jspにリダイレクトしますが、jsp ページにエラーは表示されません。
私は少し実験しましたが<s:actionerror />
、大きな写真をアップロードするときに subir-foto.jsp を入れると、次のように表示されます。
the request was rejected because its size (17224595) exceeds the configured maximum (2097152)
ご覧のとおり、これは で定義したエラーではありませんglobal.properties
。
この 2 つの異なるエラー フィールド エラーではないのはなぜですか? これはブートストラップ プラグインの問題ですか? それともStruts2のバグですか?私は何か間違ったことをしていますか?よろしくお願いします。