Package org.eclipse.jetty.client.util
Class MultiPartContentProvider
java.lang.Object
org.eclipse.jetty.client.util.AbstractTypedContentProvider
org.eclipse.jetty.client.util.MultiPartContentProvider
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterable<ByteBuffer>
,ContentProvider
,ContentProvider.Typed
,AsyncContentProvider
public class MultiPartContentProvider
extends AbstractTypedContentProvider
implements AsyncContentProvider, Closeable
A ContentProvider
for form uploads with the "multipart/form-data"
content type.
Example usage:
MultiPartContentProvider multiPart = new MultiPartContentProvider(); multiPart.addFieldPart("field", new StringContentProvider("foo"), null); multiPart.addFilePart("icon", "img.png", new PathContentProvider(Paths.get("/tmp/img.png")), null); multiPart.close(); ContentResponse response = client.newRequest("localhost", connector.getLocalPort()) .method(HttpMethod.POST) .content(multiPart) .send();
The above example would be the equivalent of submitting this form:
<form method="POST" enctype="multipart/form-data" accept-charset="UTF-8"> <input type="text" name="field" value="foo" /> <input type="file" name="icon" /> </form>
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
private static class
private static enum
Nested classes/interfaces inherited from interface org.eclipse.jetty.client.AsyncContentProvider
AsyncContentProvider.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.client.api.ContentProvider
ContentProvider.Typed
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AtomicBoolean
private static final byte[]
private static final byte[]
private final ByteBuffer
private final ByteBuffer
private long
private AsyncContentProvider.Listener
private static final Logger
private final ByteBuffer
private final ByteBuffer
private final List
<MultiPartContentProvider.Part> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addFieldPart
(String name, ContentProvider content, HttpFields fields) Adds a field part with the givenname
as field name, and the givencontent
as part content.void
addFilePart
(String name, String fileName, ContentProvider content, HttpFields fields) Adds a file part with the givenname
as field name, the givenfileName
as file name, and the givencontent
as part content.private void
private long
void
close()
long
iterator()
private static String
void
setListener
(AsyncContentProvider.Listener listener) Methods inherited from class org.eclipse.jetty.client.util.AbstractTypedContentProvider
getContentType
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.client.api.ContentProvider
isReproducible
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
LOG
-
COLON_SPACE_BYTES
private static final byte[] COLON_SPACE_BYTES -
CR_LF_BYTES
private static final byte[] CR_LF_BYTES -
parts
-
firstBoundary
-
middleBoundary
-
onlyBoundary
-
lastBoundary
-
closed
-
listener
-
length
private long length
-
-
Constructor Details
-
MultiPartContentProvider
public MultiPartContentProvider() -
MultiPartContentProvider
-
-
Method Details
-
makeBoundary
-
addFieldPart
Adds a field part with the given
name
as field name, and the givencontent
as part content.The
Content-Type
of this part will be obtained from:- the
Content-Type
header in thefields
parameter; otherwise - the
ContentProvider.Typed.getContentType()
method if thecontent
parameter implementsContentProvider.Typed
; otherwise - "text/plain"
- Parameters:
name
- the part namecontent
- the part contentfields
- the headers associated with this part
- the
-
addFilePart
Adds a file part with the given
name
as field name, the givenfileName
as file name, and the givencontent
as part content.The
Content-Type
of this part will be obtained from:- the
Content-Type
header in thefields
parameter; otherwise - the
ContentProvider.Typed.getContentType()
method if thecontent
parameter implementsContentProvider.Typed
; otherwise - "application/octet-stream"
- Parameters:
name
- the part namefileName
- the file name associated to this partcontent
- the part contentfields
- the headers associated with this part
- the
-
addPart
-
setListener
- Specified by:
setListener
in interfaceAsyncContentProvider
- Parameters:
listener
- the listener to be notified of content availability
-
calculateLength
private long calculateLength() -
getLength
public long getLength()- Specified by:
getLength
in interfaceContentProvider
- Returns:
- the content length, if known, or -1 if the content length is unknown
-
iterator
- Specified by:
iterator
in interfaceIterable<ByteBuffer>
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-