gpt4 book ai didi

java - Apache HttpPost 多个文件上传失败并出现服务器错误 - 缺少初始多部分边界

转载 作者:可可西里 更新时间:2023-11-01 16:29:31 25 4
gpt4 key购买 nike

我尝试使用 Apache Http 库上传多个文件。

   compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.5.6'

这是我上传文件的方式。

String url = "url";
File f1 = new File("file1");
File f2 = new File("file2");
HttpPost request = new HttpPost(url);
request.addHeader("Content-Type", "multipart/form-data");
request.addHeader("Authorization", "Basic abcd=");
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

FileBody fileBody1 = new FileBody(f1, ContentType.DEFAULT_TEXT);
FileBody fileBody2 = new FileBody(f2, ContentType.DEFAULT_TEXT);

multipartEntityBuilder.addPart("file_1_param", fileBody1);
multipartEntityBuilder.addPart("file_2_param", fileBody2);
HttpEntity httpEntity = multipartEntityBuilder.build();
request.setEntity(httpEntity);
HttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(request);

HttpEntity entity = response.getEntity();
if (entity == null) {
return;
}

InputStream is = entity.getContent();
String textResponse = InputStreamUtils.readText(is);
System.out.println(textResponse);

它打印。

<pre>    Server Error</pre></p><h3>Caused by:</h3><pre>java.lang.RuntimeException: javax.servlet.ServletException: org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: Missing initial multi part boundary
at com.ca.devtest.acl.servlet.filters.RemoteAuthenticationFilter.doFilter(RemoteAuthenticationFilter.java:285)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

如果我只上传一个文件,它会起作用!

请注意,这不是重复的。这些链接显示引用服务器端问题的帖子。这个问题出在客户端。

Jetty throws "Missing content for multipart request" on multipart form request

500 Internal server error Android HttpPost file upload

最佳答案

我找到了一个解决方案。我想与其他人分享它,这样您就可以 1) 了解如何上传文件和 2) 注意 HTTP header 。

当我将 FileBody 附加到 MultipartEntityBuilder 时,它会自动设置边界。我只是从代码中删除了这一行

 request.addHeader("Content-Type", "multipart/form-data"); //Remove it

Example of a POST request with one or more files attached

The Multipart Content-Type

关于java - Apache HttpPost 多个文件上传失败并出现服务器错误 - 缺少初始多部分边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52163552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com