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

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`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.
`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.
`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.
`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​(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()`

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