📄 multipartstream.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd"><!--NewPage--><HTML><HEAD><!-- Generated by javadoc on Fri Dec 06 19:57:10 CET 2002 --><TITLE>jakarta-turbine-2 2.2 API: Class MultipartStream</TITLE><LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style"></HEAD><BODY BGCOLOR="white"><!-- ========== START OF NAVBAR ========== --><A NAME="navbar_top"><!-- --></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0"><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_top_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3"> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/MultipartStream.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../../../org/apache/turbine/util/upload/FileItem.html"><B>PREV CLASS</B></A> NEXT CLASS</FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../../../../index.html" TARGET="_top"><B>FRAMES</B></A> <A HREF="MultipartStream.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> SUMMARY: <A HREF="#inner_class_summary">INNER</A> | <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD></TR></TABLE><!-- =========== END OF NAVBAR =========== --><HR><!-- ======== START OF CLASS DATA ======== --><H2><FONT SIZE="-1">org.apache.turbine.util.upload</FONT><BR>Class MultipartStream</H2><PRE>java.lang.Object | +--<B>org.apache.turbine.util.upload.MultipartStream</B></PRE><HR><DL><DT>public class <B>MultipartStream</B><DT>extends java.lang.Object</DL><P>This class can be used to process data streams conforming to MIME 'multipart' format as defined in <a href="http://rf.cs/rfc1521.html">RFC 1251</a>. Arbitrary large amouns of data in the stream can be processed under constant memory usage. <p>The format of the stream is defined in the following way:<br> <code> multipart-body := preamble 1*encapsulation close-delimiter epilogue<br> encapsulation := delimiter body CRLF<br> delimiter := "--" boundary CRLF<br> close-delimiter := "--" boudary "--"<br> preamble := <ignore><br> epilogue := <ignore><br> body := header-part CRLF body-part<br> header-part := 1*header CRLF<br> header := header-name ":" header-value<br> header-name := <printable ascii characters except ":"><br> header-value := <any ascii characters except CR & LF><br> body-data := <arbitrary data><br> </code> <p>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 <strong>required</strong> to have a boundary token of the same length as the parent stream (see <A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#setBoundary(byte[])"><CODE>setBoundary(byte[])</CODE></A>). <p>Here is an exaple of usage of this class.<br> <pre> 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 } </pre><P><DL><DT><B>Version: </B><DD>$Id: MultipartStream.java,v 1.1.1.1 2001/08/16 05:10:03 jvanzyl Exp $</DD><DT><B>Author: </B><DD><a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a></DD></DL><HR><P><!-- ======== INNER CLASS SUMMARY ======== --><A NAME="inner_class_summary"><!-- --></A><TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%"><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TD COLSPAN=2><FONT SIZE="+2"><B>Inner Class Summary</B></FONT></TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE> class</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.IllegalBoundaryException.html">MultipartStream.IllegalBoundaryException</A></B></CODE><BR> Thrown upon attempt of setting an invalid boundary token.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE> class</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.MalformedStreamException.html">MultipartStream.MalformedStreamException</A></B></CODE><BR> Thrown to indicate that the input stream fails to follow the required syntax.</TD></TR></TABLE> <!-- =========== FIELD SUMMARY =========== --><A NAME="field_summary"><!-- --></A><TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%"><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TD COLSPAN=2><FONT SIZE="+2"><B>Field Summary</B></FONT></TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected byte[]</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#boundary">boundary</A></B></CODE><BR> A byte sequence that partitions the stream.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#boundaryLength">boundaryLength</A></B></CODE><BR> The lenght of boundary token plus leading <code>CRLF--</code>.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected byte[]</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#buffer">buffer</A></B></CODE><BR> The buffer used for processing.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#bufSize">bufSize</A></B></CODE><BR> The lenght of the buffer used for processing.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected static int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#DEFAULT_BUFSIZE">DEFAULT_BUFSIZE</A></B></CODE><BR> The default lenght of the buffer used for processing.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected static byte[]</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#FIELD_SEPARATOR">FIELD_SEPARATOR</A></B></CODE><BR> A byte sequence that that follows a delimiter that will be followed by an encapsulation (<code>CRLF</code>).</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#head">head</A></B></CODE><BR> The index of first valid character in the buffer.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>static int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#HEADER_PART_SIZE_MAX">HEADER_PART_SIZE_MAX</A></B></CODE><BR> The maximum lenght of <code>header-part</code> that will be processed (10 kilobytes = 10240 bytes.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected static byte[]</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#HEADER_SEPARATOR">HEADER_SEPARATOR</A></B></CODE><BR> A byte sequence that marks the end of <code>header-part</code> (<code>CRLFCRLF</code>).</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected java.io.InputStream</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#input">input</A></B></CODE><BR> The stream were data is read from.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#keepRegion">keepRegion</A></B></CODE><BR> The amount of data that must be kept in the buffer in order to detect delimiters reliably.</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected static byte[]</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#STREAM_TERMINATOR">STREAM_TERMINATOR</A></B></CODE><BR> A byte sequence that that follows a delimiter of the last encapsulation in the stream (<code>--</code>).</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>protected int</CODE></FONT></TD><TD><CODE><B><A HREF="../../../../../org/apache/turbine/util/upload/MultipartStream.html#tail">tail</A></B></CODE>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -