マルチパートリゾルバー

 org.springframework.web.multipart パッケージの MultipartResolver は、ファイルのアップロードを含むマルチパートリクエストを解析するための戦略です。サーブレットマルチパートリクエスト解析には、コンテナーベースの StandardServletMultipartResolver 実装があります。Apache Commons FileUpload に基づく古い CommonsMultipartResolver は、新しい Servlet 5.0+ ベースラインを持つ Spring Framework 6.0 では使用できなくなっていることに注意してください。

マルチパート処理を有効にするには、DispatcherServlet Spring 構成で multipartResolver という名前で MultipartResolver Bean を宣言する必要があります。DispatcherServlet はそれを検出し、受信リクエストに適用します。コンテンツ型が multipart/form-data の POST を受信すると、リゾルバーはコンテンツを解析し、現在の HttpServletRequest を MultipartHttpServletRequest としてラップして、リクエストパラメーターとしてパーツを公開するだけでなく、解決されたファイルへのアクセスを提供します。

サーブレットマルチパート解析

サーブレットのマルチパート解析は、サーブレットコンテナーの構成を通じて有効にする必要があります。そうするには:

  • Java では、サーブレット登録で MultipartConfigElement を設定します。

  • web.xml で、サーブレット宣言に "<multipart-config>" セクションを追加します。

次の例は、サーブレット登録で MultipartConfigElement を設定する方法を示しています。

  • Java

  • Kotlin

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	// ...

	@Override
	protected void customizeRegistration(ServletRegistration.Dynamic registration) {

		// Optionally also set maxFileSize, maxRequestSize, fileSizeThreshold
		registration.setMultipartConfig(new MultipartConfigElement("/tmp"));
	}

}
class AppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {

	// ...

	override fun customizeRegistration(registration: ServletRegistration.Dynamic) {

		// Optionally also set maxFileSize, maxRequestSize, fileSizeThreshold
		registration.setMultipartConfig(MultipartConfigElement("/tmp"))
	}

}

サーブレットのマルチパート構成が整ったら、multipartResolver という名前の StandardServletMultipartResolver 型の Bean を追加できます。

このリゾルバーバリアントは、サーブレットコンテナーのマルチパートパーサーをそのまま使用し、アプリケーションをコンテナー実装の違いにさらす可能性があります。デフォルトでは、任意の HTTP メソッドを使用して任意の multipart/ コンテンツ型を解析しようとしますが、これはすべてのサーブレットコンテナーでサポートされているとは限りません。詳細および構成オプションについては、StandardServletMultipartResolver javadoc を参照してください。