| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object | +--org.apache.struts.upload.MultipartIterator
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
      }
 
MultipartElement| Field Summary | |
| protected  java.lang.String | boundaryThe boundary for this multipart request | 
| protected  int | bufferSizeThe amount of data read from a request at a time. | 
| protected  int | contentLengthThe content length of this request | 
| protected  java.lang.String | contentTypeThe content-type. | 
| private static java.lang.String | DEFAULT_ENCODINGThe default encoding of a text element if none is specified. | 
| protected  int | diskBufferSizeThe size in bytes written to the filesystem at a time [20K] | 
| private static java.lang.String | FILE_PREFIX | 
| static java.lang.String | HEADER_CONTENT_DISPOSITIONThe name of the Content-Disposition header. | 
| static java.lang.String | HEADER_CONTENT_TYPEThe name of the Content-Type header. | 
| protected  MultipartBoundaryInputStream | inputStreamThe InputStream to use to read the multipart data. | 
| protected  boolean | maxLengthExceededWhether the maximum length has been exceeded. | 
| protected  long | maxSizeThe maximum file size in bytes allowed. | 
| static java.lang.String | MESSAGE_CANNOT_RETRIEVE_BOUNDARYThe 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 | requestThe request instance for this class | 
| protected  java.lang.String | tempDirThe temporary directory to store files | 
| private static int | TEXT_BUFFER_SIZEThe 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 | 
private static final java.lang.String DEFAULT_ENCODING
private static final int TEXT_BUFFER_SIZE
public static java.lang.String HEADER_CONTENT_TYPE
public static final java.lang.String HEADER_CONTENT_DISPOSITION
public static final java.lang.String MESSAGE_CANNOT_RETRIEVE_BOUNDARY
private static final java.lang.String PARAMETER_BOUNDARY
private static final java.lang.String FILE_PREFIX
protected javax.servlet.http.HttpServletRequest request
protected MultipartBoundaryInputStream inputStream
protected java.lang.String boundary
protected long maxSize
protected int contentLength
protected int diskBufferSize
protected int bufferSize
protected java.lang.String tempDir
protected java.lang.String contentType
protected boolean maxLengthExceeded
| Constructor Detail | 
public MultipartIterator(javax.servlet.http.HttpServletRequest request)
                  throws java.io.IOException
request - The multipart request to iterate
public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                         int bufferSize)
                  throws java.io.IOException
request - The multipart request to iteratebufferSize - The size in bytes that should be read from the input
                   stream at a times
public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                         int bufferSize,
                         long maxSize)
                  throws java.io.IOException
request - The multipart request to iteratebufferSize - The size in bytes that should be read from the input
                   stream at a timesmaxSize - The maximum size in bytes allowed for a multipart element's data
public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                         int bufferSize,
                         long maxSize,
                         java.lang.String tempDir)
                  throws java.io.IOException
| Method Detail | 
protected void parseRequest()
                     throws java.io.IOException
java.io.IOException
public MultipartElement getNextElement()
                                throws java.io.IOException
MultipartElement
         representing the next element in the request data
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 foundprotected java.lang.String getElementEncoding()
protected MultipartElement createTextMultipartElement(java.lang.String encoding)
                                               throws java.io.IOException
encoding - The character encoding of the string.
java.io.IOException
protected MultipartElement createFileMultipartElement()
                                               throws java.io.IOException
java.io.IOExceptionpublic void setBufferSize(int bufferSize)
ServletInputStream.readLine(byte[], int, int)public int getBufferSize()
ServletInputStream.readLine(byte[], int, int)public void setMaxSize(long maxSize)
maxSize - The maximum post data size in bytes, set to -1
                for no limitpublic long getMaxSize()
public boolean isMaxLengthExceeded()
private final void getBoundaryFromContentType()
                                       throws java.io.IOException
java.io.IOExceptionprivate final void getContentTypeOfRequest()
protected java.io.File createLocalFile()
                                throws java.io.IOException
java.io.IOException| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||