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 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()`.
`static final 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.
`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

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