org.apache.struts2.dispatcher.multipart

## Class MultiPartRequestWrapper

- java.lang.Object
- - javax.servlet.ServletRequestWrapper
  - - javax.servlet.http.HttpServletRequestWrapper
    - - org.apache.struts2.dispatcher.StrutsRequestWrapper
      - - org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper

- All Implemented Interfaces:
    javax.servlet.http.HttpServletRequest, javax.servlet.ServletRequest

      public class MultiPartRequestWrapper
      extends StrutsRequestWrapper

  Parse a multipart request and provide a wrapper around the request. The parsing implementation used depends on the `struts.multipart.parser` setting. It should be set to a class which extends `MultiPartRequest`.

  The `struts.multipart.parser` property should be set to `jakarta` for the Jakarta implementation, `pell` for the Pell implementation and `cos` for the Jason Hunter implementation.

  The files are uploaded when the object is instantiated. If there are any errors they are logged using `addError(LocalizedMessage)`. An action handling a multipart form should first check `hasErrors()` before doing any other processing.

  An alternate implementation, PellMultiPartRequest, is provided as a plugin.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static org.apache.logging.log4j.Logger` | `LOG`

    - ### Fields inherited from interface javax.servlet.http.HttpServletRequest

      `BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultiPartRequestWrapper(MultiPartRequest multiPartRequest, javax.servlet.http.HttpServletRequest request, String saveDir, LocaleProvider provider)`
    `MultiPartRequestWrapper(MultiPartRequest multiPartRequest, javax.servlet.http.HttpServletRequest request, String saveDir, LocaleProvider provider, boolean disableRequestAttributeValueStackLookup)` Process file downloads and log any errors.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addError(LocalizedMessage anErrorMessage)` Adds an error message when it isn't already added.
    `protected LocalizedMessage` | `buildErrorMessage(Throwable e, Object[] args)`
    `void` | `cleanUp()`
    `String[]` | `getContentTypes(String name)` Get an array of content encoding for the specified input field name or `null` if no content type was specified.
    `Collection<LocalizedMessage>` | `getErrors()` Returns a collection of any errors generated when parsing the multipart request.
    `String[]` | `getFileNames(String fieldName)` Get a String array of the file names for uploaded files
    `Enumeration<String>` | `getFileParameterNames()` Get an enumeration of the parameter names for uploaded files
    `UploadedFile[]` | `getFiles(String fieldName)` Get a `File[]` for the given input field name.
    `String[]` | `getFileSystemNames(String fieldName)` Get the filename(s) of the file(s) uploaded for the given input field name.
    `String` | `getParameter(String name)`
    `Map` | `getParameterMap()`
    `Enumeration` | `getParameterNames()`
    `String[]` | `getParameterValues(String name)`
    `boolean` | `hasErrors()` Returns `true` if any errors occured when parsing the HTTP multipart request, `false` otherwise.
    `protected Enumeration` | `mergeParams(Enumeration params1, Enumeration params2)` Merges 2 enumeration of parameters as one.
    `protected void` | `setLocale(javax.servlet.http.HttpServletRequest request)`

    - ### Methods inherited from class org.apache.struts2.dispatcher.StrutsRequestWrapper

      `getAttribute`

    - ### Methods inherited from class javax.servlet.http.HttpServletRequestWrapper

      `authenticate, changeSessionId, getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getIntHeader, getMethod, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getRequestURI, getRequestURL, getServletPath, getSession, getSession, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromUrl, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isUserInRole, login, logout, upgrade`

    - ### Methods inherited from class javax.servlet.ServletRequestWrapper

      `getAsyncContext, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getRequestDispatcher, getScheme, getServerName, getServerPort, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, isWrapperFor, isWrapperFor, removeAttribute, setAttribute, setCharacterEncoding, setRequest, startAsync, startAsync`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface javax.servlet.ServletRequest

      `getAsyncContext, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getScheme, getServerName, getServerPort, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setAttribute, setCharacterEncoding, startAsync, startAsync`

- - ### Field Detail

    - #### LOG

          protected static final org.apache.logging.log4j.Logger LOG

  - ### Constructor Detail

    - #### MultiPartRequestWrapper

          public MultiPartRequestWrapper(MultiPartRequest multiPartRequest,
                                         javax.servlet.http.HttpServletRequest request,
                                         String saveDir,
                                         LocaleProvider provider,
                                         boolean disableRequestAttributeValueStackLookup)

      Process file downloads and log any errors.
      Parameters:
        `multiPartRequest` - Our MultiPartRequest object
        `request` - Our HttpServletRequest object
        `saveDir` - Target directory for any files that we save
        `provider` - locale provider
        `disableRequestAttributeValueStackLookup` - disable the request attribute value stack lookup

    - #### MultiPartRequestWrapper

          public MultiPartRequestWrapper(MultiPartRequest multiPartRequest,
                                         javax.servlet.http.HttpServletRequest request,
                                         String saveDir,
                                         LocaleProvider provider)

  - ### Method Detail

    - #### setLocale

          protected void setLocale(javax.servlet.http.HttpServletRequest request)

    - #### buildErrorMessage

          protected LocalizedMessage buildErrorMessage(Throwable e,
                                                       Object[] args)

    - #### getFileParameterNames

          public Enumeration<String> getFileParameterNames()

      Get an enumeration of the parameter names for uploaded files
      Returns:
        enumeration of parameter names for uploaded files

    - #### getContentTypes

          public String[] getContentTypes(String name)

      Get an array of content encoding for the specified input field name or `null` if no content type was specified.
      Parameters:
        `name` - input field name
      Returns:
        an array of content encoding for the specified input field name

    - #### getFiles

          public UploadedFile[] getFiles(String fieldName)

      Get a `File[]` for the given input field name.
      Parameters:
        `fieldName` - input field name
      Returns:
        a File[] object for files associated with the specified input field name

    - #### getFileNames

          public String[] getFileNames(String fieldName)

      Get a String array of the file names for uploaded files
      Parameters:
        `fieldName` - Field to check for file names.
      Returns:
        a String[] of file names for uploaded files

    - #### getFileSystemNames

          public String[] getFileSystemNames(String fieldName)

      Get the filename(s) of the file(s) uploaded for the given input field name. Returns `null` if the file is not found.
      Parameters:
        `fieldName` - input field name
      Returns:
        the filename(s) of the file(s) uploaded for the given input field name or `null` if name not found.

    - #### getParameter

          public String getParameter(String name)

      Specified by:
        `getParameter` in interface `javax.servlet.ServletRequest`
      Overrides:
        `getParameter` in class `javax.servlet.ServletRequestWrapper`
      See Also:
        `ServletRequest.getParameter(String)`

    - #### getParameterMap

          public Map getParameterMap()

      Specified by:
        `getParameterMap` in interface `javax.servlet.ServletRequest`
      Overrides:
        `getParameterMap` in class `javax.servlet.ServletRequestWrapper`
      See Also:
        `ServletRequest.getParameterMap()`

    - #### getParameterNames

          public Enumeration getParameterNames()

      Specified by:
        `getParameterNames` in interface `javax.servlet.ServletRequest`
      Overrides:
        `getParameterNames` in class `javax.servlet.ServletRequestWrapper`
      See Also:
        `ServletRequest.getParameterNames()`

    - #### getParameterValues

          public String[] getParameterValues(String name)

      Specified by:
        `getParameterValues` in interface `javax.servlet.ServletRequest`
      Overrides:
        `getParameterValues` in class `javax.servlet.ServletRequestWrapper`
      See Also:
        `ServletRequest.getParameterValues(String)`

    - #### hasErrors

          public boolean hasErrors()

      Returns `true` if any errors occured when parsing the HTTP multipart request, `false` otherwise.
      Returns:
        `true` if any errors occured when parsing the HTTP multipart request, `false` otherwise.

    - #### getErrors

          public Collection<LocalizedMessage> getErrors()

      Returns a collection of any errors generated when parsing the multipart request.
      Returns:
        the error Collection.

    - #### addError

          protected void addError(LocalizedMessage anErrorMessage)

      Adds an error message when it isn't already added.
      Parameters:
        `anErrorMessage` - the error message to report.

    - #### mergeParams

          protected Enumeration mergeParams(Enumeration params1,
                                            Enumeration params2)

      Merges 2 enumeration of parameters as one.
      Parameters:
        `params1` - the first enumeration.
        `params2` - the second enumeration.
      Returns:
        a single Enumeration of all elements from both Enumerations.

    - #### cleanUp

          public void cleanUp()

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.