Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.struts.upload
Class MultipartIterator

    java.lang.Object
      |
      +--org.apache.struts.upload.MultipartIterator

public class MultipartIterator
extends java.lang.Object

The MultipartIterator class is responsible for reading the input data of a multipart request and splitting it up into input elements, wrapped inside of a `MultipartElement` for easy definition. To use this class, create a new instance of MultipartIterator passing it a HttpServletRequest in the constructor. Then use the `getNextElement` method until it returns null, then you're finished. Example:

          MultipartIterator iterator = new MultipartIterator(request);
          MultipartElement element;

          while ((element = iterator.getNextElement()) != null) {
               //do something with element
          }

Author:
  Mike Schachter
See Also:
  `MultipartElement`

Field Summary
`protected java.lang.String` | `boundary` The boundary for this multipart request
`protected int` | `bufferSize` The amount of data read from a request at a time.
`protected int` | `contentLength` The content length of this request
`protected java.lang.String` | `contentType` The content-type.
`private static java.lang.String` | `DEFAULT_ENCODING` The default encoding of a text element if none is specified.
`protected int` | `diskBufferSize` The size in bytes written to the filesystem at a time [20K]
`private static java.lang.String` | `FILE_PREFIX`
`static java.lang.String` | `HEADER_CONTENT_DISPOSITION` The name of the Content-Disposition header.
`static java.lang.String` | `HEADER_CONTENT_TYPE` The name of the Content-Type header.
`protected MultipartBoundaryInputStream` | `inputStream` The InputStream to use to read the multipart data.
`protected boolean` | `maxLengthExceeded` Whether the maximum length has been exceeded.
`protected long` | `maxSize` The maximum file size in bytes allowed.
`static java.lang.String` | `MESSAGE_CANNOT_RETRIEVE_BOUNDARY` The exception message for when the boundary of a multipart request can't be determined.
`private static java.lang.String` | `PARAMETER_BOUNDARY`
`protected javax.servlet.http.HttpServletRequest` | `request` The request instance for this class
`protected java.lang.String` | `tempDir` The temporary directory to store files
`private static int` | `TEXT_BUFFER_SIZE` The size in bytes to copy of text data at a time.

Constructor Summary
`MultipartIterator(javax.servlet.http.HttpServletRequest request)` Constructs a MultipartIterator with a default buffer size and no file size limit
`MultipartIterator(javax.servlet.http.HttpServletRequest request, int bufferSize)` Constructs a MultipartIterator with the specified buffer size and no file size limit
`MultipartIterator(javax.servlet.http.HttpServletRequest request, int bufferSize, long maxSize)` Constructs a MultipartIterator with the specified buffer size and the specified file size limit in bytes
`MultipartIterator(javax.servlet.http.HttpServletRequest request, int bufferSize, long maxSize, java.lang.String tempDir)`

Method Summary
`protected MultipartElement` | `createFileMultipartElement()` Create a multipart element instance representing the file in the stream.
`protected java.io.File` | `createLocalFile()` Creates a file on disk from the current mulitpart element.
`protected MultipartElement` | `createTextMultipartElement(java.lang.String encoding)` Create a text element from the data in the body of the element.
`private void` | `getBoundaryFromContentType()` Parses a content-type String for the boundary.
`int` | `getBufferSize()` Get the maximum amount of bytes read from a line at one time
`private void` | `getContentTypeOfRequest()` Gets the value of the Content-Type header of the request.
`protected java.lang.String` | `getElementEncoding()` Get the character encoding used for this current multipart element.
`long` | `getMaxSize()` Get the maximum post data size allowed for a multipart request
`MultipartElement` | `getNextElement()` Retrieves the next element in the iterator if one exists.
`boolean` | `isMaxLengthExceeded()` Whether or not the maximum length has been exceeded by the client.
`protected void` | `parseRequest()` Handles retrieving the boundary and setting the input stream
`void` | `setBufferSize(int bufferSize)` Set the maximum amount of bytes read from a line at one time
`void` | `setMaxSize(long maxSize)` Set the maximum post data size allowed for a multipart request

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_ENCODING

    private static final java.lang.String DEFAULT_ENCODING

  The default encoding of a text element if none is specified.

  See Also:
    Constant Field Values

### TEXT_BUFFER_SIZE

    private static final int TEXT_BUFFER_SIZE

  The size in bytes to copy of text data at a time.

  See Also:
    Constant Field Values

### HEADER_CONTENT_TYPE

    public static java.lang.String HEADER_CONTENT_TYPE

  The name of the Content-Type header.

### HEADER_CONTENT_DISPOSITION

    public static final java.lang.String HEADER_CONTENT_DISPOSITION

  The name of the Content-Disposition header.

  See Also:
    Constant Field Values

### MESSAGE_CANNOT_RETRIEVE_BOUNDARY

    public static final java.lang.String MESSAGE_CANNOT_RETRIEVE_BOUNDARY

  The exception message for when the boundary of a multipart request can't be determined.

  See Also:
    Constant Field Values

### PARAMETER_BOUNDARY

    private static final java.lang.String PARAMETER_BOUNDARY

See Also:
  Constant Field Values

### FILE_PREFIX

    private static final java.lang.String FILE_PREFIX

See Also:
  Constant Field Values

### request

    protected javax.servlet.http.HttpServletRequest request

  The request instance for this class

### inputStream

    protected MultipartBoundaryInputStream inputStream

  The InputStream to use to read the multipart data.

### boundary

    protected java.lang.String boundary

  The boundary for this multipart request

### maxSize

    protected long maxSize

  The maximum file size in bytes allowed. Ignored if -1

### contentLength

    protected int contentLength

  The content length of this request

### diskBufferSize

    protected int diskBufferSize

  The size in bytes written to the filesystem at a time [20K]

### bufferSize

    protected int bufferSize

  The amount of data read from a request at a time. This also represents the maximum size in bytes of a line read from the request [4KB]

### tempDir

    protected java.lang.String tempDir

  The temporary directory to store files

### contentType

    protected java.lang.String contentType

  The content-type.

### maxLengthExceeded

    protected boolean maxLengthExceeded

  Whether the maximum length has been exceeded.

Constructor Detail

### MultipartIterator

    public MultipartIterator(javax.servlet.http.HttpServletRequest request)
                      throws java.io.IOException

  Constructs a MultipartIterator with a default buffer size and no file size limit

Parameters:
  `request` - The multipart request to iterate

### MultipartIterator

    public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                             int bufferSize)
                      throws java.io.IOException

  Constructs a MultipartIterator with the specified buffer size and no file size limit

Parameters:
  `request` - The multipart request to iterate
  `bufferSize` - The size in bytes that should be read from the input stream at a times

### MultipartIterator

    public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                             int bufferSize,
                             long maxSize)
                      throws java.io.IOException

  Constructs a MultipartIterator with the specified buffer size and the specified file size limit in bytes

Parameters:
  `request` - The multipart request to iterate
  `bufferSize` - The size in bytes that should be read from the input stream at a times
  `maxSize` - The maximum size in bytes allowed for a multipart element's data

### MultipartIterator

    public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                             int bufferSize,
                             long maxSize,
                             java.lang.String tempDir)
                      throws java.io.IOException

Method Detail

### parseRequest

    protected void parseRequest()
                         throws java.io.IOException

  Handles retrieving the boundary and setting the input stream

    `java.io.IOException`

### getNextElement

    public MultipartElement getNextElement()
                                    throws java.io.IOException

  Retrieves the next element in the iterator if one exists.

  Returns:
    a `MultipartElement` representing the next element in the request data
  Throws:
    `java.io.IOException` - if the post size exceeds the maximum file size passed in the 3 argument constructor or if the "ISO-8859-1" encoding isn't found

### getElementEncoding

    protected java.lang.String getElementEncoding()

  Get the character encoding used for this current multipart element.

### createTextMultipartElement

    protected MultipartElement createTextMultipartElement(java.lang.String encoding)
                                                   throws java.io.IOException

  Create a text element from the data in the body of the element.

  Parameters:
    `encoding` - The character encoding of the string.
    `java.io.IOException`

### createFileMultipartElement

    protected MultipartElement createFileMultipartElement()
                                                   throws java.io.IOException

  Create a multipart element instance representing the file in the stream.

    `java.io.IOException`

### setBufferSize

    public void setBufferSize(int bufferSize)

  Set the maximum amount of bytes read from a line at one time

  See Also:
    `ServletInputStream.readLine(byte[], int, int)`

### getBufferSize

    public int getBufferSize()

  Get the maximum amount of bytes read from a line at one time

  See Also:
    `ServletInputStream.readLine(byte[], int, int)`

### setMaxSize

    public void setMaxSize(long maxSize)

  Set the maximum post data size allowed for a multipart request

  Parameters:
    `maxSize` - The maximum post data size in bytes, set to `-1` for no limit

### getMaxSize

    public long getMaxSize()

  Get the maximum post data size allowed for a multipart request

  Returns:
    The maximum post data size in bytes

### isMaxLengthExceeded

    public boolean isMaxLengthExceeded()

  Whether or not the maximum length has been exceeded by the client.

### getBoundaryFromContentType

    private final void getBoundaryFromContentType()
                                           throws java.io.IOException

  Parses a content-type String for the boundary.

    `java.io.IOException`

### getContentTypeOfRequest

    private final void getContentTypeOfRequest()

  Gets the value of the Content-Type header of the request.

### createLocalFile

    protected java.io.File createLocalFile()
                                    throws java.io.IOException

  Creates a file on disk from the current mulitpart element.

    `java.io.IOException`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2002 - Apache Software Foundation