Tomcat 6を使用して、画像のアップロードを許可するためにapachecommonsFileUploadを使用しています。setSizeMaxとsetFileSizeMaxを使用して最大ファイルを設定できます。しかし、大きなファイル全体がアップロードされてから、大きすぎるかどうかも確認されているようです。別の投稿によると、setSizeMaxはアップロードを遮断する必要があるようですが、それは私が得る動作ではありません。
これをテストするために、sizeMaxとfieSizeMaxを非常に低く設定し、かなり大きなファイルをアップロードしました。大きなファイルをほぼ瞬時に切り取るのではなく、アップロードするのに15秒かかりました。
何か案が?簡略化された例外句を含むいくつかのコードを次に示します。
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(30);
upload.setSizeMax(28);
List items = null;
try {
items = upload.parseRequest(request);
} catch (Exception e) {
out.println("exceeded max file size..");
return;
}
詳細:tomcatの使用6. maxPostSizeの設定は、content-type:multipart/form-dataでは機能しません。また、リクエストコンテンツの長さを再度確認するには、ファイル全体をアップロードする必要があります。最後に、FileUploadのsteaming apiを使用することも機能していないようです。これも、ストリームを閉じる前にファイル全体をアップロードする必要があるように思われるためです。サーブレットがバイトをディスクに書き込まない場合でも、アップロードは続行されます。画像のアップロードなどはWebアプリでは非常に一般的なタスクであるため、Tomcat6を使用して大量のアップロードを防ぐ方法が必要です。