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 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 and Description
    --- | ---
    `static String` | `ATTACHMENT` Content-disposition value for file attachment.
    `static String` | `CONTENT_DISPOSITION` HTTP content disposition header name.
    `static String` | `CONTENT_LENGTH` HTTP content length header name.
    `static String` | `CONTENT_TYPE` HTTP content type header name.
    `static String` | `FORM_DATA` Content-disposition value for form data.
    `static String` | `MULTIPART` Part of HTTP content type header.
    `static String` | `MULTIPART_FORM_DATA` HTTP content type header for multipart forms.
    `static String` | `MULTIPART_MIXED` HTTP content type header for multiple uploads.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FileUploadBase()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `getBoundary(String contentType)` Retrieves the boundary from the `Content-type` header.
    `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.
    `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()`.
    `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(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`.
    `Map<String,List<FileItem>>` | `parseParameterMap(RequestContext ctx)` Processes an RFC 1867 compliant `multipart/form-data` stream.
    `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(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 String CONTENT_TYPE

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

    - #### CONTENT_DISPOSITION

          public static final String CONTENT_DISPOSITION

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

    - #### CONTENT_LENGTH

          public static final String CONTENT_LENGTH

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

    - #### FORM_DATA

          public static final String FORM_DATA

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

    - #### ATTACHMENT

          public static final String ATTACHMENT

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

    - #### MULTIPART

          public static final String MULTIPART

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

    - #### MULTIPART_FORM_DATA

          public static final String MULTIPART_FORM_DATA

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

    - #### MULTIPART_MIXED

          public static final 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 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(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,
                                                  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.
        `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 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 Map<String,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(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 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 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(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.

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.