📄 multipartstream.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc on Wed Jun 25 23:12:11 PDT 2003 -->
<TITLE>
MultipartStream (FileUpload 1.0 API)
</TITLE>
<META NAME="keywords" CONTENT="org.apache.commons.fileupload.MultipartStream,MultipartStream class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="MultipartStream (FileUpload 1.0 API)";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">
<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 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="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/commons/fileupload/FileUploadBase.html"><B>PREV CLASS</B></A>
<A HREF="../../../../org/apache/commons/fileupload/ThresholdingOutputStream.html"><B>NEXT CLASS</B></A></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>
<SCRIPT> <!-- if(window==top) { document.writeln('<A HREF="../../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>'); } //--></SCRIPT><NOSCRIPT><A HREF="../../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A></NOSCRIPT></FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY: <A HREF="#nested_class_summary">NESTED</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.commons.fileupload</FONT>
<BR>
Class MultipartStream</H2>
<PRE>
java.lang.Object
|
+--<B>org.apache.commons.fileupload.MultipartStream</B>
</PRE>
<HR>
<DL>
<DT>public class <B>MultipartStream</B><DT>extends java.lang.Object</DL>
<P>
<p> Low level API for processing file uploads. <p> This class can be used to process data streams conforming to MIME 'multipart' format as defined in <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>. Arbitrarily large amounts 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/commons/fileupload/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>
<P>
<DL>
<DT><B>Version:</B></DT> <DD>$Id: MultipartStream.java,v 1.12 2003/06/01 00:18:13 martinc Exp $</DD><DT><B>Author:</B></DT> <DD><a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>, <a href="mailto:martinc@apache.org">Martin Cooper</a>, Sean C. Sullivan</DD></DL>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<A NAME="nested_class_summary"><!-- --></A><TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Nested 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/commons/fileupload/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/commons/fileupload/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 static int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/MultipartStream.html#DEFAULT_BUFSIZE">DEFAULT_BUFSIZE</A></B></CODE>
<BR>
The default length of the buffer used for processing a request.</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/commons/fileupload/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>static int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/MultipartStream.html#HEADER_PART_SIZE_MAX">HEADER_PART_SIZE_MAX</A></B></CODE>
<BR>
The maximum length 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/commons/fileupload/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 static byte[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/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>
</TABLE>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A><TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/MultipartStream.html#MultipartStream()">MultipartStream</A></B>()</CODE>
<BR>
Default constructor.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/MultipartStream.html#MultipartStream(java.io.InputStream, byte[])">MultipartStream</A></B>(java.io.InputStream input, byte[] boundary)</CODE>
<BR>
Constructs a <code>MultipartStream</code> with a default size buffer.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/MultipartStream.html#MultipartStream(java.io.InputStream, byte[], int)">MultipartStream</A></B>(java.io.InputStream input, byte[] boundary, int bufSize)</CODE>
<BR>
Constructs a <code>MultipartStream</code> with a custom size buffer.</TD>
</TR>
</TABLE>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A><TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/commons/fileupload/MultipartStream.html#arrayequals(byte[], byte[], int)">arrayequals</A></B>(byte[] a, byte[] b, int count)</CODE>
<BR>
Compares <code>count</code> first bytes in the arrays <code>a</code> and <code>b</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -