## org.apache.tomcat.util.http.fileupload
Class FileUploadBase

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

Direct Known Subclasses:
  DiskFileUpload, 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(HttpServletRequest)` 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.

Version:
  $Id: FileUploadBase.java 467222 2006-10-24 03:17:11Z markt $
Author:
  Rafal Krzewski, Daniel Rall, Jason van Zyl, John McNally, Martin Cooper, Sean C. Sullivan

Nested Class Summary
`static class` `FileUploadBase.InvalidContentTypeException` Thrown to indicate that the request is not a multipart request.
`static class` `FileUploadBase.SizeLimitExceededException` Thrown to indicate that the request size exceeds the configured maximum.
`static class` `FileUploadBase.UnknownSizeException` Thrown to indicate that the request size is not specified.

Field Summary
`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_TYPE` HTTP content type header name.
`static java.lang.String` `FORM_DATA` Content-disposition value for form data.
`static int` `MAX_HEADER_SIZE` The maximum length of a single header line that will be parsed (1024 bytes).
`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
`FileUploadBase()`

Method Summary
`protected FileItem` `createItem(java.util.Map headers, boolean isFormField)` Creates a new `FileItem` instance.
`protected java.lang.String` `getFieldName(java.util.Map headers)` Retrieves the field name from the `Content-disposition` header.
`abstract FileItemFactory` `getFileItemFactory()` Returns the factory class used when creating file items.
`protected java.lang.String` `getFileName(java.util.Map headers)` Retrieves the file name from the `Content-disposition` header.
`protected java.lang.String` `getHeader(java.util.Map headers, java.lang.String name)` Returns the header with the specified name from the supplied map.
`java.lang.String` `getHeaderEncoding()` Retrieves the character encoding used when reading the headers of an individual part.
`long` `getSizeMax()` Returns the maximum allowed upload size.
`static boolean` `isMultipartContent(javax.servlet.http.HttpServletRequest req)` Utility method that determines whether the request contains multipart content.
`protected java.util.Map` `parseHeaders(java.lang.String headerPart)` Parses the `header-part` and returns as key/value pairs.
`java.util.List` `parseRequest(javax.servlet.http.HttpServletRequest req)` 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` `setHeaderEncoding(java.lang.String encoding)` Specifies the character encoding to be used when reading the headers of individual parts.
`void` `setSizeMax(long sizeMax)` Sets the maximum allowed upload size.

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

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

### MAX_HEADER_SIZE

    public static final int MAX_HEADER_SIZE

  The maximum length of a single header line that will be parsed (1024 bytes).

  See Also:
    Constant Field Values

Constructor Detail

### FileUploadBase

    public FileUploadBase()

Method Detail

### isMultipartContent

    public static final boolean isMultipartContent(javax.servlet.http.HttpServletRequest req)

  Utility method that determines whether the request contains multipart content.

  Parameters:
    `req` - The servlet request 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 upload size.

  Returns:
    The maximum allowed size, in bytes.
  See Also:
    `setSizeMax(long)`

### setSizeMax

    public void setSizeMax(long sizeMax)

  Sets the maximum allowed upload size. If negative, there is no maximum.

  Parameters:
    `sizeMax` - The maximum allowed size, in bytes, or -1 for no maximum.
  See Also:
    `getSizeMax()`

### 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 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 parts. When not specified, or `null`, the platform default encoding is used.

  Parameters:
    `encoding` - The encoding used to read part headers.

### parseRequest

    public java.util.List parseRequest(javax.servlet.http.HttpServletRequest req)
                                throws FileUploadException

  Processes an RFC 1867 compliant `multipart/form-data` stream. If files are stored on disk, the path is given by `getRepository()`.

  Parameters:
    `req` - The servlet 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.

### getFileName

    protected java.lang.String getFileName(java.util.Map headers)

  Retrieves the file name from the `Content-disposition` header.

  Parameters:
    `headers` - A `Map` containing the HTTP request headers.
  Returns:
    The file name for the current `encapsulation`.

### getFieldName

    protected java.lang.String getFieldName(java.util.Map 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`.

### createItem

    protected FileItem createItem(java.util.Map headers,
                                  boolean isFormField)
                           throws FileUploadException

  Creates a new `FileItem` instance.

  Parameters:
    `headers` - A `Map` containing the HTTP request headers.
    `isFormField` - Whether or not this item is a form field, as opposed to a file.
  Returns:
    A newly created `FileItem` instance.
  Throws:
    `FileUploadException` - if an error occurs.

### parseHeaders

    protected java.util.Map parseHeaders(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.

### getHeader

    protected final java.lang.String getHeader(java.util.Map headers,
                                               java.lang.String name)

  Returns the header with the specified name from the supplied map. The header lookup is case-insensitive.

  Parameters:
    `headers` - A `Map` containing the HTTP request headers.
    `name` - The name of the header to return.
  Returns:
    The value of specified header, or a comma-separated list if there were multiple headers of that name.

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