public interface MultipartResolver
Spring 3.1 の時点で、Spring には 2 つの具体的な実装が含まれています。
CommonsMultipartResolver
は Apache Commons FileUpload 用 StandardServletMultipartResolver
アプリケーションがマルチパートリクエストを独自に解析することを選択する可能性があるため、Spring DispatcherServlets
に使用されるデフォルトのリゾルバー実装はありません。実装を定義するには、DispatcherServlet's
アプリケーションコンテキストで ID "multipartResolver" を持つ Bean を作成します。このようなリゾルバーは、その DispatcherServlet
によって処理されるすべてのリクエストに適用されます。
DispatcherServlet
がマルチパートリクエストを検出すると、構成された MultipartResolver
を介してそれを解決し、ラップされた HttpServletRequest
EE を渡します。コントローラーは、指定されたリクエストを MultipartHttpServletRequest
インターフェースにキャストできます。これにより、任意の MultipartFiles
へのアクセスが可能になります。このキャストは、実際のマルチパートリクエストの場合にのみサポートされることに注意してください。
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartRequest.getFile("image"); ... }直接アクセスの代わりに、コマンドまたはフォームコントローラーは、
ByteArrayMultipartFileEditor
または StringMultipartFileEditor
をデータバインダーに登録して、マルチパートコンテンツを自動的に適用して Bean プロパティを形成できます。DispatcherServlet
で MultipartResolver
を使用する代わりに、MultipartFilter
を web.xml
に登録できます。ルートアプリケーションコンテキストの対応する MultipartResolver
Bean に委譲します。これは主に、Spring 独自の Web MVC フレームワークを使用しないアプリケーションを対象としています。
メモ: アプリケーションコードから MultipartResolver
自体にアクセスする必要はほとんどありません。MultipartHttpServletRequests
をコントローラーで使用できるようにするだけで、バックグラウンドで機能します。
MultipartHttpServletRequest
, MultipartFile
, CommonsMultipartResolver
, ByteArrayMultipartFileEditor
, StringMultipartFileEditor
, DispatcherServlet
修飾子と型 | メソッドと説明 |
---|---|
void | cleanupMultipart(MultipartHttpServletRequest request) アップロードされたファイルのストレージなど、マルチパート処理に使用されるリソースをクリーンアップします。 |
boolean | isMultipart(HttpServletRequestEE request) 指定されたリクエストにマルチパートコンテンツが含まれているかどうかを判断します。 |
MultipartHttpServletRequest | resolveMultipart(HttpServletRequestEE request) 指定された HTTP リクエストをマルチパートファイルとパラメーターに解析し、リクエストをファイル記述子へのアクセスを提供する MultipartHttpServletRequest オブジェクト内にラップし、標準の ServletRequest メソッドを介して含まれるパラメーターにアクセスできるようにします。 |
boolean isMultipart(HttpServletRequestEE request)
通常、コンテンツ型 "multipart/form-data" をチェックしますが、実際に受け入れられるリクエストは、リゾルバー実装の機能によって異なる場合があります。
request
- 評価されるサーブレットリクエスト MultipartHttpServletRequest resolveMultipart(HttpServletRequestEE request) throws MultipartException
MultipartHttpServletRequest
オブジェクト内にラップし、標準の ServletRequest メソッドを介して含まれるパラメーターにアクセスできるようにします。request
- ラップするサーブレットリクエスト (マルチパートコンテンツ型である必要があります)MultipartException
- サーブレットリクエストがマルチパートでない場合、または実装固有の問題が発生した場合 (ファイルサイズの制限を超えるなど)MultipartRequest.getFile(java.lang.String)
, MultipartRequest.getFileNames()
, MultipartRequest.getFileMap()
, ServletRequest.getParameter(java.lang.String)
EE, ServletRequest.getParameterNames()
EE, ServletRequest.getParameterMap()
EEvoid cleanupMultipart(MultipartHttpServletRequest request)
request
- リソースをクリーンアップするリクエスト