Package org.apache.tomcat.util.http.fileupload

## Class FileUploadBase

- java.lang.Object
- - org.apache.tomcat.util.http.fileupload.FileUploadBase

- Direct Known Subclasses:
    `FileUpload`

      public abstract class FileUploadBase
      extends java.lang.Object

  High level API for processing file uploads.

  This class handles multiple files per single HTML widget, sent using `multipart/mixed` encoding type, as specified by RFC 1867. Use `parseRequest(RequestContext)` to acquire a list of `FileItem`s associated with a given HTML widget.

  How the data for individual parts is stored is determined by the factory used to create them; a given part may be in memory, on disk, or somewhere else.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `ATTACHMENT` | Content-disposition value for file attachment.
    `static java.lang.String` | `CONTENT_DISPOSITION` | HTTP content disposition header name.
    `static java.lang.String` | `CONTENT_LENGTH` | HTTP content length header name.
    `static java.lang.String` | `CONTENT_TYPE` | HTTP content type header name.
    `static java.lang.String` | `FORM_DATA` | Content-disposition value for form data.
    `static java.lang.String` | `MULTIPART` | Part of HTTP content type header.
    `static java.lang.String` | `MULTIPART_FORM_DATA` | HTTP content type header for multipart forms.
    `static java.lang.String` | `MULTIPART_MIXED` | HTTP content type header for multiple uploads.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FileUploadBase()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `byte[]` | `getBoundary​(java.lang.String contentType)` | Retrieves the boundary from the `Content-type` header.
    `java.lang.String` | `getFieldName​(FileItemHeaders headers)` | Retrieves the field name from the `Content-disposition` header.
    `abstract FileItemFactory` | `getFileItemFactory()` | Returns the factory class used when creating file items.
    `java.lang.String` | `getFileName​(FileItemHeaders headers)` | Retrieves the file name from the `Content-disposition` header.
    `long` | `getFileSizeMax()` | Returns the maximum allowed size of a single uploaded file, as opposed to `getSizeMax()`.
    `java.lang.String` | `getHeaderEncoding()` | Retrieves the character encoding used when reading the headers of an individual part.
    `FileItemIterator` | `getItemIterator​(RequestContext ctx)` | Processes an RFC 1867 compliant `multipart/form-data` stream.
    `FileItemHeaders` | `getParsedHeaders​(java.lang.String headerPart)` | Parses the `header-part` and returns as key/value pairs.
    `ProgressListener` | `getProgressListener()` | Returns the progress listener.
    `long` | `getSizeMax()` | Returns the maximum allowed size of a complete request, as opposed to `getFileSizeMax()`.
    `static boolean` | `isMultipartContent​(RequestContext ctx)` | Utility method that determines whether the request contains multipart content.
    `protected FileItemHeadersImpl` | `newFileItemHeaders()` | Creates a new instance of `FileItemHeaders`.
    `java.util.Map<java.lang.String,​java.util.List<FileItem>>` | `parseParameterMap​(RequestContext ctx)` | Processes an RFC 1867 compliant `multipart/form-data` stream.
    `java.util.List<FileItem>` | `parseRequest​(RequestContext ctx)` | Processes an RFC 1867 compliant `multipart/form-data` stream.
    `abstract void` | `setFileItemFactory​(FileItemFactory factory)` | Sets the factory class to use when creating file items.
    `void` | `setFileSizeMax​(long fileSizeMax)` | Sets the maximum allowed size of a single uploaded file, as opposed to `getSizeMax()`.
    `void` | `setHeaderEncoding​(java.lang.String encoding)` | Specifies the character encoding to be used when reading the headers of individual part.
    `void` | `setProgressListener​(ProgressListener pListener)` | Sets the progress listener.
    `void` | `setSizeMax​(long sizeMax)` | Sets the maximum allowed size of a complete request, as opposed to `setFileSizeMax(long)`.

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

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

- - ### Field Detail

    - #### CONTENT_TYPE

          public static final java.lang.String CONTENT_TYPE

      HTTP content type header name.
      See Also:
        Constant Field Values

    - #### CONTENT_DISPOSITION

          public static final java.lang.String CONTENT_DISPOSITION

      HTTP content disposition header name.
      See Also:
        Constant Field Values

    - #### CONTENT_LENGTH

          public static final java.lang.String CONTENT_LENGTH

      HTTP content length header name.
      See Also:
        Constant Field Values

    - #### FORM_DATA

          public static final java.lang.String FORM_DATA

      Content-disposition value for form data.
      See Also:
        Constant Field Values

    - #### ATTACHMENT

          public static final java.lang.String ATTACHMENT

      Content-disposition value for file attachment.
      See Also:
        Constant Field Values

    - #### MULTIPART

          public static final java.lang.String MULTIPART

      Part of HTTP content type header.
      See Also:
        Constant Field Values

    - #### MULTIPART_FORM_DATA

          public static final java.lang.String MULTIPART_FORM_DATA

      HTTP content type header for multipart forms.
      See Also:
        Constant Field Values

    - #### MULTIPART_MIXED

          public static final java.lang.String MULTIPART_MIXED

      HTTP content type header for multiple uploads.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### FileUploadBase

          public FileUploadBase()

  - ### Method Detail

    - #### isMultipartContent

          public static final boolean isMultipartContent​(RequestContext ctx)

      Utility method that determines whether the request contains multipart content.

      NOTE:This method will be moved to the `ServletFileUpload` class after the FileUpload 1.1 release. Unfortunately, since this method is static, it is not possible to provide its replacement until this method is removed.

      Parameters:
        `ctx` - The request context to be evaluated. Must be non-null.
      Returns:
        `true` if the request is multipart; `false` otherwise.

    - #### getFileItemFactory

          public abstract FileItemFactory getFileItemFactory()

      Returns the factory class used when creating file items.
      Returns:
        The factory class for new file items.

    - #### setFileItemFactory

          public abstract void setFileItemFactory​(FileItemFactory factory)

      Sets the factory class to use when creating file items.
      Parameters:
        `factory` - The factory class for new file items.

    - #### getSizeMax

          public long getSizeMax()

      Returns the maximum allowed size of a complete request, as opposed to `getFileSizeMax()`.
      Returns:
        The maximum allowed size, in bytes. The default value of -1 indicates, that there is no limit.
      See Also:
        `setSizeMax(long)`

    - #### setSizeMax

          public void setSizeMax​(long sizeMax)

      Sets the maximum allowed size of a complete request, as opposed to `setFileSizeMax(long)`.
      Parameters:
        `sizeMax` - The maximum allowed size, in bytes. The default value of -1 indicates, that there is no limit.
      See Also:
        `getSizeMax()`

    - #### getFileSizeMax

          public long getFileSizeMax()

      Returns the maximum allowed size of a single uploaded file, as opposed to `getSizeMax()`.
      Returns:
        Maximum size of a single uploaded file.
      See Also:
        `setFileSizeMax(long)`

    - #### setFileSizeMax

          public void setFileSizeMax​(long fileSizeMax)

      Sets the maximum allowed size of a single uploaded file, as opposed to `getSizeMax()`.
      Parameters:
        `fileSizeMax` - Maximum size of a single uploaded file.
      See Also:
        `getFileSizeMax()`

    - #### getHeaderEncoding

          public java.lang.String getHeaderEncoding()

      Retrieves the character encoding used when reading the headers of an individual part. When not specified, or `null`, the request encoding is used. If that is also not specified, or `null`, the platform default encoding is used.
      Returns:
        The encoding used to read part headers.

    - #### setHeaderEncoding

          public void setHeaderEncoding​(java.lang.String encoding)

      Specifies the character encoding to be used when reading the headers of individual part. When not specified, or `null`, the request encoding is used. If that is also not specified, or `null`, the platform default encoding is used.
      Parameters:
        `encoding` - The encoding used to read part headers.

    - #### getItemIterator

          public FileItemIterator getItemIterator​(RequestContext ctx)
                                           throws FileUploadException,
                                                  java.io.IOException

      Processes an RFC 1867 compliant `multipart/form-data` stream.
      Parameters:
        `ctx` - The context for the request to be parsed.
      Returns:
        An iterator to instances of `FileItemStream` parsed from the request, in the order that they were transmitted.
      Throws:
        `FileUploadException` - if there are problems reading/parsing the request or storing files.
        `java.io.IOException` - An I/O error occurred. This may be a network error while communicating with the client or a problem while storing the uploaded content.

    - #### parseRequest

          public java.util.List<FileItem> parseRequest​(RequestContext ctx)
                                                throws FileUploadException

      Processes an RFC 1867 compliant `multipart/form-data` stream.
      Parameters:
        `ctx` - The context for the request to be parsed.
      Returns:
        A list of `FileItem` instances parsed from the request, in the order that they were transmitted.
      Throws:
        `FileUploadException` - if there are problems reading/parsing the request or storing files.

    - #### parseParameterMap

          public java.util.Map<java.lang.String,​java.util.List<FileItem>> parseParameterMap​(RequestContext ctx)
                                                                                           throws FileUploadException

      Processes an RFC 1867 compliant `multipart/form-data` stream.
      Parameters:
        `ctx` - The context for the request to be parsed.
      Returns:
        A map of `FileItem` instances parsed from the request.
      Throws:
        `FileUploadException` - if there are problems reading/parsing the request or storing files.
      Since:
        1.3

    - #### getBoundary

          public byte[] getBoundary​(java.lang.String contentType)

      Retrieves the boundary from the `Content-type` header.
      Parameters:
        `contentType` - The value of the content type header from which to extract the boundary value.
      Returns:
        The boundary, as a byte array.

    - #### getFileName

          public java.lang.String getFileName​(FileItemHeaders headers)

      Retrieves the file name from the `Content-disposition` header.
      Parameters:
        `headers` - The HTTP headers object.
      Returns:
        The file name for the current `encapsulation`.

    - #### getFieldName

          public java.lang.String getFieldName​(FileItemHeaders headers)

      Retrieves the field name from the `Content-disposition` header.
      Parameters:
        `headers` - A `Map` containing the HTTP request headers.
      Returns:
        The field name for the current `encapsulation`.

    - #### getParsedHeaders

          public FileItemHeaders getParsedHeaders​(java.lang.String headerPart)

      Parses the `header-part` and returns as key/value pairs.

      If there are multiple headers of the same names, the name will map to a comma-separated list containing the values.

      Parameters:
        `headerPart` - The `header-part` of the current `encapsulation`.
      Returns:
        A `Map` containing the parsed HTTP request headers.

    - #### newFileItemHeaders

          protected FileItemHeadersImpl newFileItemHeaders()

      Creates a new instance of `FileItemHeaders`.
      Returns:
        The new instance.

    - #### getProgressListener

          public ProgressListener getProgressListener()

      Returns the progress listener.
      Returns:
        The progress listener, if any, or null.

    - #### setProgressListener

          public void setProgressListener​(ProgressListener pListener)

      Sets the progress listener.
      Parameters:
        `pListener` - The progress listener, if any. Defaults to null.