blob: 79aa4c4d305747178f6cc8139692cb849028c2d6 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.13) on Tue Feb 08 12:40:05 CST 2022 -->
<title>MultiPartFormInputStream (Eclipse Jetty API Doc - v10.0.8)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-02-08">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MultiPartFormInputStream (Eclipse Jetty API Doc - v10.0.8)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":42,"i5":42,"i6":10,"i7":10,"i8":10,"i9":42,"i10":10,"i11":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MultiPartFormInputStream.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.server</a></div>
<h2 title="Class MultiPartFormInputStream" class="title">Class MultiPartFormInputStream</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.server.MultiPartFormInputStream</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">MultiPartFormInputStream</span>
extends java.lang.Object</pre>
<div class="block">MultiPartInputStream
<p>
Handle a MultiPart Mime input stream, breaking it up on the boundary into files and strings.
</p>
<p>
Deleting the parts can be done from a different thread if the parts are parsed asynchronously.
Because of this we use the state to fail the parsing and coordinate which thread will delete any remaining parts.
The deletion of parts is done by the cleanup thread in all cases except the transition from DELETING-&gt;DELETED which
is done by the parsing thread.
</p>
<pre><code>
UNPARSED - Parsing has not started, there are no parts which need to be cleaned up.
PARSING - The parsing thread is reading from the InputStream and generating parts.
PARSED - Parsing has complete and no more parts will be generated.
DELETING - deleteParts() has been called while we were in PARSING state, parsing thread will do the delete.
DELETED - The parts have been deleted, this is the terminal state.
deleteParts()
+--------------------------------------------------------------+
| |
| deleteParts() v
UNPARSED -------&gt; PARSING --------&gt; PARSED ------------------&gt;DELETED
| ^
| |
+---------------&gt; DELETING -------------------+
deleteParts() parsing thread
</code></pre></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://tools.ietf.org/html/rfc7578">https://tools.ietf.org/html/rfc7578</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MultiPartFormInputStream.MultiPart.html" title="class in org.eclipse.jetty.server">MultiPartFormInputStream.MultiPart</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.io.InputStream,java.lang.String,javax.servlet.MultipartConfigElement,java.io.File)">MultiPartFormInputStream</a></span>&#8203;(java.io.InputStream&nbsp;in,
java.lang.String&nbsp;contentType,
javax.servlet.MultipartConfigElement&nbsp;config,
java.io.File&nbsp;contextTmpDir)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteParts()">deleteParts</a></span>()</code></th>
<td class="colLast">
<div class="block">Delete any tmp storage for parts, and clear out the parts list.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBufferSize()">getBufferSize</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>javax.servlet.http.Part</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getPart(java.lang.String)">getPart</a></span>&#8203;(java.lang.String&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Get the named Part.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.util.Collection&lt;javax.servlet.http.Part&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getParts()">getParts</a></span>()</code></th>
<td class="colLast">
<div class="block">Parse, if necessary, the multipart data and return the list of Parts.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDeleteOnExit()">isDeleteOnExit</a></span>()</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">no replacement provided</div>
</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isEmpty()">isEmpty</a></span>()</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use getParts().isEmpty()</div>
</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isWriteFilesWithFilenames()">isWriteFilesWithFilenames</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#parse()">parse</a></span>()</code></th>
<td class="colLast">
<div class="block">Parse, if necessary, the multipart stream.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBufferSize(int)">setBufferSize</a></span>&#8203;(int&nbsp;bufferSize)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDeleteOnExit(boolean)">setDeleteOnExit</a></span>&#8203;(boolean&nbsp;deleteOnExit)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">no replacement provided.</div>
</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setWriteFilesWithFilenames(boolean)">setWriteFilesWithFilenames</a></span>&#8203;(boolean&nbsp;writeFilesWithFilenames)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#throwIfError()">throwIfError</a></span>()</code></th>
<td class="colLast">
<div class="block">Throws an exception if one has been latched.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.io.InputStream,java.lang.String,javax.servlet.MultipartConfigElement,java.io.File)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MultiPartFormInputStream</h4>
<pre>public&nbsp;MultiPartFormInputStream&#8203;(java.io.InputStream&nbsp;in,
java.lang.String&nbsp;contentType,
javax.servlet.MultipartConfigElement&nbsp;config,
java.io.File&nbsp;contextTmpDir)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - Request input stream</dd>
<dd><code>contentType</code> - Content-Type header</dd>
<dd><code>config</code> - MultipartConfigElement</dd>
<dd><code>contextTmpDir</code> - javax.servlet.context.tempdir</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="isEmpty()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEmpty</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;boolean&nbsp;isEmpty()</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">use getParts().isEmpty()</div>
</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the list of parsed parts is empty</dd>
</dl>
</li>
</ul>
<a id="deleteParts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteParts</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;deleteParts()</pre>
<div class="block">Delete any tmp storage for parts, and clear out the parts list.</div>
</li>
</ul>
<a id="getParts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParts</h4>
<pre class="methodSignature">public&nbsp;java.util.Collection&lt;javax.servlet.http.Part&gt;&nbsp;getParts()
throws java.io.IOException</pre>
<div class="block">Parse, if necessary, the multipart data and return the list of Parts.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parts</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if unable to get the parts</dd>
</dl>
</li>
</ul>
<a id="getPart(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPart</h4>
<pre class="methodSignature">public&nbsp;javax.servlet.http.Part&nbsp;getPart&#8203;(java.lang.String&nbsp;name)
throws java.io.IOException</pre>
<div class="block">Get the named Part.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the part name</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parts</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if unable to get the part</dd>
</dl>
</li>
</ul>
<a id="throwIfError()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>throwIfError</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;throwIfError()
throws java.io.IOException</pre>
<div class="block">Throws an exception if one has been latched.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - the exception (if present)</dd>
</dl>
</li>
</ul>
<a id="parse()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;parse()</pre>
<div class="block">Parse, if necessary, the multipart stream.</div>
</li>
</ul>
<a id="setDeleteOnExit(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDeleteOnExit</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;void&nbsp;setDeleteOnExit&#8203;(boolean&nbsp;deleteOnExit)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">no replacement provided.</div>
</div>
</li>
</ul>
<a id="setWriteFilesWithFilenames(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setWriteFilesWithFilenames</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setWriteFilesWithFilenames&#8203;(boolean&nbsp;writeFilesWithFilenames)</pre>
</li>
</ul>
<a id="isWriteFilesWithFilenames()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isWriteFilesWithFilenames</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isWriteFilesWithFilenames()</pre>
</li>
</ul>
<a id="isDeleteOnExit()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDeleteOnExit</h4>
<pre class="methodSignature">@Deprecated
public&nbsp;boolean&nbsp;isDeleteOnExit()</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">no replacement provided</div>
</div>
</li>
</ul>
<a id="getBufferSize()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBufferSize</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getBufferSize()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the size of buffer used to read data from the input stream</dd>
</dl>
</li>
</ul>
<a id="setBufferSize(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setBufferSize</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setBufferSize&#8203;(int&nbsp;bufferSize)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bufferSize</code> - the size of buffer used to read data from the input stream</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MultiPartFormInputStream.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2022 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>