|
|||||||||
| Home >> All >> org >> apache >> turbine >> util >> [ upload overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.turbine.util.upload
Class MultipartStream

java.lang.Objectorg.apache.turbine.util.upload.MultipartStream
Deprecated. use commons-fileupload instead
- public class MultipartStream
- extends java.lang.Object
This class can be used to process data streams conforming to MIME 'multipart' format as defined in RFC 1251. Arbitrary large amouns of data in the stream can be processed under constant memory usage.
The format of the stream is defined in the following way:
multipart-body := preamble 1*encapsulation close-delimiter epilogue
encapsulation := delimiter body CRLF
delimiter := "--" boundary CRLF
close-delimiter := "--" boudary "--"
preamble := <ignore>
epilogue := <ignore>
body := header-part CRLF body-part
header-part := 1*header CRLF
header := header-name ":" header-value
header-name := <printable ascii characters except ":">
header-value := <any ascii characters except CR & LF>
body-data := <arbitrary data>
Note that body-data can contain another mulipart entity. There
is limited support for single pass processing of such nested
streams. The nested stream is required to have a
boundary token of the same length as the parent stream (see setBoundary(byte[]) 55 ).
Here is an exaple of usage of this class.
try {
MultipartStream multipartStream = new MultipartStream(input,
boundary);
boolean nextPart = malitPartStream.skipPreamble();
OutputStream output;
while(nextPart) {
header = chunks.readHeader();
// process headers
// create some output stream
multipartStream.readBodyPart(output);
nextPart = multipartStream.readBoundary();
}
} catch(MultipartStream.MalformedStreamException e) {
// the stream failed to follow required syntax
} catch(IOException) {
// a read or write error occurred
}
- Version:
- $Id: MultipartStream.java 278822 2005-09-05 19:53:05Z henning $
| Nested Class Summary | |
class |
MultipartStream.IllegalBoundaryException
Deprecated. Thrown upon attempt of setting an invalid boundary token. |
class |
MultipartStream.MalformedStreamException
Deprecated. Thrown to indicate that the input stream fails to follow the required syntax. |
| Field Summary | |
protected byte[] |
boundary
Deprecated. A byte sequence that partitions the stream. |
protected int |
boundaryLength
Deprecated. The lenght of boundary token plus leading CRLF--. |
protected byte[] |
buffer
Deprecated. The buffer used for processing. |
protected int |
bufSize
Deprecated. The lenght of the buffer used for processing. |
protected static int |
DEFAULT_BUFSIZE
Deprecated. The default lenght of the buffer used for processing. |
protected static byte[] |
FIELD_SEPARATOR
Deprecated. A byte sequence that that follows a delimiter that will be followed by an encapsulation ( CRLF). |
protected int |
head
Deprecated. The index of first valid character in the buffer. |
static int |
HEADER_PART_SIZE_MAX
Deprecated. The maximum lenght of header-part that will be
processed (10 kilobytes = 10240 bytes.) |
protected static byte[] |
HEADER_SEPARATOR
Deprecated. A byte sequence that marks the end of header-part
(CRLFCRLF). |
protected java.io.InputStream |
input
Deprecated. The stream were data is read from. |
protected int |
keepRegion
Deprecated. The amount of data that must be kept in the buffer in order to detect delimiters reliably. |
protected static byte[] |
STREAM_TERMINATOR
Deprecated. A byte sequence that that follows a delimiter of the last encapsulation in the stream ( --). |
protected int |
tail
Deprecated. The index of last valid characer in the buffer + 1. |
| Constructor Summary | |
MultipartStream(java.io.InputStream input,
byte[] boundary)
Deprecated. Constructs a MultipartStream with a defalut size buffer. |
|
MultipartStream(java.io.InputStream input,
byte[] boundary,
int bufSize)
Deprecated. Constructs a MultipartStream with a custom size buffer. |
|
| Method Summary | |
static boolean |
arrayequals(byte[] a,
byte[] b,
int count)
Deprecated. Compares count first bytes in the arrays
a and b. |
int |
discardBodyData()
Deprecated. Reads body-data from the current
encapsulation and discards it. |
protected int |
findByte(byte value,
int pos)
Deprecated. Searches a byte of specified value in the buffer
starting at specified position. |
protected int |
findSeparator()
Deprecated. Searches the boundary in buffer
region delimited by head and tail. |
int |
readBodyData(java.io.OutputStream output)
Deprecated. Reads body-data from the current
encapsulation and writes its contents into the
output Stream. |
boolean |
readBoundary()
Deprecated. Skips a boundary token, and checks wether more
encapsulations are contained in the stream. |
byte |
readByte()
Deprecated. Reads a byte from the buffer, and refills it as
neccessary. |
java.lang.String |
readHeaders()
Deprecated. Reads header-part of the current
encapsulation
|
void |
setBoundary(byte[] boundary)
Deprecated. Changes the boundary token used for partitioning the stream. |
boolean |
skipPreamble()
Deprecated. Finds the beginning of the first encapsulation. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
HEADER_PART_SIZE_MAX
public static final int HEADER_PART_SIZE_MAX
- Deprecated.
- The maximum lenght of
header-partthat will be processed (10 kilobytes = 10240 bytes.)- See Also:
- Constant Field Values
- The maximum lenght of
input
protected java.io.InputStream input
- Deprecated.
- The stream were data is read from.
- The stream were data is read from.
boundaryLength
protected int boundaryLength
- Deprecated.
- The lenght of boundary token plus leading
CRLF--. - The lenght of boundary token plus leading
keepRegion
protected int keepRegion
- Deprecated.
- The amount of data that must be kept in the buffer in order to detect delimiters reliably.
- The amount of data that must be kept in the buffer in order to detect delimiters reliably.
boundary
protected byte[] boundary
- Deprecated.
- A byte sequence that partitions the stream.
- A byte sequence that partitions the stream.
bufSize
protected int bufSize
- Deprecated.
- The lenght of the buffer used for processing.
- The lenght of the buffer used for processing.
DEFAULT_BUFSIZE
protected static final int DEFAULT_BUFSIZE
- Deprecated.
- The default lenght of the buffer used for processing.
- See Also:
- Constant Field Values
- The default lenght of the buffer used for processing.
buffer
protected byte[] buffer
- Deprecated.
- The buffer used for processing.
- The buffer used for processing.
head
protected int head
- Deprecated.
- The index of first valid character in the buffer. 0 <= head < bufSize
- The index of first valid character in the buffer. 0 <= head < bufSize
tail
protected int tail
- Deprecated.
- The index of last valid characer in the buffer + 1. 0 <= tail <= bufSize
- The index of last valid characer in the buffer + 1. 0 <= tail <= bufSize
HEADER_SEPARATOR
protected static final byte[] HEADER_SEPARATOR
- Deprecated.
- A byte sequence that marks the end of
header-part(CRLFCRLF). - A byte sequence that marks the end of
FIELD_SEPARATOR
protected static final byte[] FIELD_SEPARATOR
- Deprecated.
- A byte sequence that that follows a delimiter that will be followed by an encapsulation (
CRLF). - A byte sequence that that follows a delimiter that will be followed by an encapsulation (
STREAM_TERMINATOR
protected static final byte[] STREAM_TERMINATOR
- Deprecated.
- A byte sequence that that follows a delimiter of the last encapsulation in the stream (
--). - A byte sequence that that follows a delimiter of the last encapsulation in the stream (
| Constructor Detail |
MultipartStream
public MultipartStream(java.io.InputStream input, byte[] boundary, int bufSize) throws MultipartStream.MalformedStreamException, java.io.IOException
- Deprecated.
- Constructs a MultipartStream with a custom size buffer.
Note that the buffer must be at least big enough to contain the boundary string, plus 4 characters for CR/LF and double dash, plus at least one byte of data. Too small buffer size setting will degrade performance.
- Constructs a MultipartStream with a custom size buffer.
MultipartStream
public MultipartStream(java.io.InputStream input, byte[] boundary) throws java.io.IOException
- Deprecated.
- Constructs a MultipartStream with a defalut size buffer.
- Constructs a MultipartStream with a defalut size buffer.
| Method Detail |
readByte
public byte readByte()
throws java.io.IOException
- Deprecated.
- Reads a byte from the
buffer, and refills it as neccessary. - Reads a byte from the
readBoundary
public boolean readBoundary()
throws MultipartStream.MalformedStreamException
- Deprecated.
- Skips a
boundarytoken, and checks wether moreencapsulationsare contained in the stream. - Skips a
setBoundary
public void setBoundary(byte[] boundary)
throws MultipartStream.IllegalBoundaryException
- Deprecated.
- Changes the boundary token used for partitioning the stream.
This method allows single pass processing of nested multipart streams.
The boundary token of the nested stream is
requiredto be of the same length as the boundary token in parent stream.Restoring parent stream boundary token after processing of a nested stream is left ot the application.
- Changes the boundary token used for partitioning the stream.
readHeaders
public java.lang.String readHeaders() throws MultipartStream.MalformedStreamException
- Deprecated.
Reads
header-partof the currentencapsulationHeaders are returned verbatim to the input stream, including traling
CRLFmarker. Parsing is left to the application.TODO allow limiting maximum header size to protect against abuse.
readBodyData
public int readBodyData(java.io.OutputStream output) throws MultipartStream.MalformedStreamException, java.io.IOException
- Deprecated.
- Reads
body-datafrom the currentencapsulationand writes its contents into the outputStream.Arbitrary large amouts of data can be processed by this method using a constant size buffer. (see constructor 55 ).
- Reads
discardBodyData
public int discardBodyData()
throws MultipartStream.MalformedStreamException,
java.io.IOException
- Deprecated.
- Reads
body-datafrom the currentencapsulationand discards it.Use this method to skip encapsulations you don't need or don't understand.
- Reads
skipPreamble
public boolean skipPreamble()
throws java.io.IOException
- Deprecated.
- Finds the beginning of the first
encapsulation. - Finds the beginning of the first
arrayequals
public static boolean arrayequals(byte[] a,
byte[] b,
int count)
- Deprecated.
- Compares
countfirst bytes in the arraysaandb. - Compares
findByte
protected int findByte(byte value,
int pos)
- Deprecated.
- Searches a byte of specified value in the
bufferstarting at specifiedposition. - Searches a byte of specified value in the
findSeparator
protected int findSeparator()
- Deprecated.
- Searches the
boundaryinbufferregion delimited byheadandtail. - Searches the
|
|||||||||
| Home >> All >> org >> apache >> turbine >> util >> [ upload overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC
org.apache.turbine.util.upload.MultipartStream