私は、SpringのCommonsMultipartResolver
を使って、サーブレット3環境でファイルのアップロードを処理しています。小さなファイルをアップロードするときにFileUploadBaseがマルチパートの部分を見つけられない
アップロードされたファイルが大きい場合、すべて正常に動作します。
アップロードされたファイルが小さければ、リゾルバはパーツの検出に失敗します(例外はスローされません)。
これはfindNextItem()
メソッドがfalseを返すapache.commons.fileupload.FileItemIteratorImpl
の方法で、これを追跡していますが、投稿に複数の有効な部分があるにも関わらずです。これにより、コントローラメソッドでMultipartFile
オブジェクトを使用できなくなります。
HttpServletRequest
でデバッガを見ると、正しい部品番号(getParts()
が正しい部品番号を返します)が表示されます。
は、私はちょうどそれは、大きなファイルのために(> 1メガバイト)、例外が最大ファイル・サイズについてスローさ除き、HttpServletRequest
を使用することができます(私は成功しCommonsMultipartResolver
用に設定されているが、明らかにHttpServletRequest
に渡るしません)。
サーブレット3の最大ファイルサイズを設定しようとしましたが、アプリケーションにそのサイズを設定するためだけにいくつかの新しいクラスを追加したくありません。
サーブレット3とcommons-fileupload
を使用して小さいファイルをアップロードする方法はありますか?
詳細
IはmaxUploadSizePerFile
= 100メガバイトとしてcommons-fileupload
を設定しています。
次の動作結果:
は、アップロードされたファイルがされている場合は> 10メガバイト、その後、commons-fileupload
プロセスは、すべてが細かいです。
アップロードされたファイルが〜3.8MBと10MBの間にある場合、commons-fileupload
がブラウザーで接続リセットメッセージにつながる要求を解析する機会がある前に、入力ストリームとその基礎となる接続が閉じられます。
アップロードされたファイルが1 MB〜3.8 MBの場合、入力ストリームはクローズされますが、基本接続ではないため、エラーページにエラーが表示されます。
最後に、アップロードされたファイルが1 MB未満の場合、commons-fileupload
が呼び出される前に、基礎となるサーブレット3の実装が正常に処理され、要求に部品がないと考えています。