Class MultiPartContentProvider

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<java.nio.ByteBuffer>, ContentProvider, ContentProvider.Typed, AsyncContentProvider

    public class MultiPartContentProvider
    extends AbstractTypedContentProvider
    implements AsyncContentProvider, java.io.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>
     
    • Constructor Detail

      • MultiPartContentProvider

        public MultiPartContentProvider()
      • MultiPartContentProvider

        public MultiPartContentProvider​(java.lang.String boundary)
    • Method Detail

      • addFieldPart

        public void addFieldPart​(java.lang.String name,
                                 ContentProvider content,
                                 HttpFields fields)

        Adds a field part with the given name as field name, and the given content as part content.

        The Content-Type of this part will be obtained from:

        Parameters:
        name - the part name
        content - the part content
        fields - the headers associated with this part
      • addFilePart

        public void addFilePart​(java.lang.String name,
                                java.lang.String fileName,
                                ContentProvider content,
                                HttpFields fields)

        Adds a file part with the given name as field name, the given fileName as file name, and the given content as part content.

        The Content-Type of this part will be obtained from:

        Parameters:
        name - the part name
        fileName - the file name associated to this part
        content - the part content
        fields - the headers associated with this part
      • getLength

        public long getLength()
        Specified by:
        getLength in interface ContentProvider
        Returns:
        the content length, if known, or -1 if the content length is unknown
      • iterator

        public java.util.Iterator<java.nio.ByteBuffer> iterator()
        Specified by:
        iterator in interface java.lang.Iterable<java.nio.ByteBuffer>
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable