Java如何使用HttpClient分段上传?
本示例演示了如何使用ApacheHttpClient库进行分段上传。在此示例中,我们上传了一个文件。我们首先创建要上传文件的对象。该FileBody代表文件的二进制身体部位。
接下来,通过创建MultipartEntityBuilder的实例来准备HttpEntity对象。向该对象添加部分,在本例中,我们添加fileBody。我们可以添加多个部分到这个对象的名称说。它可以是字符串、文件等,就像我们在普通web表单中所做的那样。
builder对象的build()方法完成实体创建并返回HttpEntity对象。为了发送/上传到服务器,我们创建一个HttpPost请求并设置要发布的实体。最后,HttpClient对象的execute()方法将multipart对象发送到服务器。
package org.nhooo.example.httpclient;
import org.apache.http.HttpEntity;
import org.apache.http.client.HttpClient;
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.HttpClientBuilder;
import java.io.File;
import java.io.IOException;
public class HttpPostMultipartExample {
public static void main(String[] args) {
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);
HttpClient client = HttpClientBuilder.create().build();
try {
client.execute(request);
} catch (IOException e) {
e.printStackTrace();
}
}
}要在服务器上接收文件,可以在以下示例中查看servlet代码:如何创建基于Web的文件上载?
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
<!-- https://search.maven.org/remotecontent?filepath=org/apache/httpcomponents/httpmime/4.5.9/httpmime-4.5.9.jar -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.9</version>
</dependency>