ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:yasuval BASE64でエンコードしてPOSTしたパラメータが、Javaで取得できません。原因がわかりません。
困り度:
  • すぐに回答を!
ファイルデータをサーバにアップロードするために、
BASE64でエンコードしてPOSTしています。

1.4MBぐらいまではrequestをサーバ側で取得でき保存できるのですが、
1.4MBぐらいを超えると、requestが取得できず(?)例外となります。

requestが取得できていないと判断したのは、
eclipseでデバックして、リクエストの中身を参照して判断しました。
Apacheのログでは正しくApacheで取得しているであろう、
ファイルサイズが出力されています。

何が起因しているのかまったく分かりません。
何か解決方法のヒントでも教えていただけませんでしょうか。

ローカルのWindowsでも同現象になります。

Apache:2.0
Tomcat:6.0
DI(Seasar):2.4.28
質問投稿日時:09/10/21 23:57
質問番号:5386312
この質問に対する回答は締め切られました。

回答

良回答10pt

回答者:violini ちょっとどんな例外かわからないのであれですがー。

単純に、TomcatのPOSTサイズの上限を設定してないってことはないでしょうかー。server.xmlの<Connector>に、maxPostSize="バイト数"ってやって上限をでかくしてやったら送れないですかねー。
種類:回答
どんな人:一般人
自信:参考意見
回答日時:09/10/22 08:34
回答番号:No.1
この回答へのお礼お返事を頂いたにも関わらず、連絡が遅くなり申し訳ございませんでした。

原因をいろいろと調査していった結果、
tomcatのserver.xmlにmaxPostSizeというのが設定されていて、
それの初期値が2MBだった、ということが、分かりました。

1.4MBをBASE64でエンコードしてPOSTすると、
元データより多くのデータ量をPOSTすることになり、
他リクエストパラメータと合わせて、2MBを超えたためでした。

大変お世話になりました。

BASE64でリクエストパラメータとしてPOSTするのは、
あまり良いやり方ではないかもしれないですかね。。。