This example demonstrates how to do multipart upload using the Apache HttpClient library. In this example we upload a single file. We start by creating an object of the file to be uploaded. The FileBody
represent the binary body part of the file.
Next, prepare the HttpEntity
object by create an instance of MultipartEntityBuilder
. Add parts to this object, in this case we add the fileBody
. We can add multiple part to this object as the name says. It can be string, file, etc. as we do in a normal web form.
The build()
method of the builder
object finalize the entity creation and return us the HttpEntity
object. To send / upload to server we create an HttpPost
request and set the entity to be posted. Finally, the execute()
method of the HttpClient
object send the multipart object to server.
package org.kodejava.apache.http;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.File;
import java.io.IOException;
public class HttpPostMultipartExample {
public static void main(String[] args) {
try (CloseableHttpClient client = HttpClientBuilder.create().build()) {
File file = new File("data.zip");
FileBody fileBody = new FileBody(file, ContentType.DEFAULT_BINARY);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("file", fileBody);
HttpEntity entity = builder.build();
HttpPost request = new HttpPost("http://localhost:8080/upload");
request.setEntity(entity);
client.execute(request);
} catch (IOException e) {
e.printStackTrace();
}
}
}
To receive the file on the server you can take a look at the servlet code in the following example: How do I create a web based file upload?.
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.14</version>
</dependency>
</dependencies>
- How do I create a string of repeated characters? - September 1, 2023
- How do I convert datetime string with optional part to a date object? - August 28, 2023
- How do I split large excel file into multiple smaller files? - April 15, 2023
Hi Can you give me code to download multiple files using Httpclient from HttpResponse