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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FileUploadBase()`

- ## Method Summary

  Modifier and Type
  Method
  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.
  `long`
  `getFileCountMax()`
  Returns the maximum number of files allowed in a single request.
  `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()`.
  `protected FileItemHeadersImpl`
  `newFileItemHeaders()`
  Creates a new instance of `FileItemHeaders`.
  `List<FileItem>`
  `parseRequest(RequestContext ctx)`
  Processes an RFC 1867 compliant `multipart/form-data` stream.
  `void`
  `setFileCountMax(long fileCountMax)`
  Sets the maximum number of files allowed per request.
  `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 Details

  - ### 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 Details

  - ### FileUploadBase

    public FileUploadBase()

- ## Method Details

  - ### 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()`

  - ### getFileCountMax

    public long getFileCountMax()
    Returns the maximum number of files allowed in a single request.
    Returns:
      The maximum number of files allowed in a single request.

  - ### setFileCountMax

    public void setFileCountMax(long fileCountMax)
    Sets the maximum number of files allowed per request.
    Parameters:
      `fileCountMax` - The new limit. `-1` means no limit.

  - ### 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.

  - ### 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.