依赖.
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <!-- <version>4.5.3</version> --> </dependency>
import java.io.File; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; public class TestMultiPartUpload { /** * TODO 方法说明。 * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { CloseableHttpClient httpClient = HttpClientBuilder.create().build(); try { HttpPost post = new HttpPost("http://127.0.0.1:8080/mypath/test"); post.setHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"); post.setHeader("charset", "utf-8"); String token = "4dc6098e-d584-4883-a4e7-45adc5xxxxxx"; post.setHeader("Authorization", "Bearer " + token); post.setHeader("Accept", "application/json"); // post.setHeader("Content-Type", "multipart/mixed;boundary=----QWERTYUIO"); FileBody img1 = new FileBody(new File("D:/img/1.jpg"), ContentType.create("image/jpeg"), "1.jpg"); FileBody img2 = new FileBody(new File("D:/img/4.jpg"), ContentType.create("image/jpeg"), "4.jpg"); StringBody meta = new StringBody("{ "key1":"v1"; "key2":"v2" }", ContentType.APPLICATION_JSON); HttpEntity reqEntity = MultipartEntityBuilder.create() .addPart("files", img1) .addPart("files", img2) //.addPart("story", meta).setBoundary("----QWERTYUIO")
.addPart("story", meta) .build(); post.setEntity(reqEntity); CloseableHttpResponse response = httpClient.execute(post); try { System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); HttpEntity resEntity = response.getEntity(); if (resEntity != null) { System.out.println("Response content: " + InputStreamUtil.toString(resEntity.getContent())); System.out.println("Response content length: " + resEntity.getContentLength()); } EntityUtils.consume(resEntity); } finally { response.close(); } } finally { httpClient.close(); } } }