gpt4 book ai didi

file - httpClient,在分块模式下执行 Multipart 的 POST 时出现问题...

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

好吧,我想知道如何以分块模式发布多部分。我有 3 个部分,文件可能很大,所以必须分块发送。

这是我做的:

    MultipartEntity multipartEntity = new MultipartEntity() {
@Override
public boolean isChunked() {
return true;
}
};

multipartEntity.addPart("theText", new StringBody("some text", Charset.forName("UTF-8")));

FileBody fileBody1 = new FileBody(file1);
multipartEntity.addPart("theFile1", fileBody1);

FileBody fileBody2 = new FileBody(file2);
multipartEntity.addPart("theFile2", fileBody2);

httppost.setEntity(multipartEntity);

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpClient httpClient = new DefaultHttpClient(params);

HttpResponse httpResponse = httpClient.execute(httppost);

在服务器端,我确实收到了 3 个部分,但是例如文件没有分块,它们是作为一个部分接收的...基本上全部我看到只出现 4 个边界:3 --xxx,最后是 1 --xxx-- 。我认为重写 isChunked 可以解决问题,但没有......;(

我想做的事情可行吗?我怎样才能做到这一点?

非常感谢。很棒

最佳答案

要生成分块的多部分正文,其中一个部分的大小必须不可用。就像正在流式传输的部分。

例如,假设您的 file2 是一个非常大的视频。您可以替换部分代码:

FileBody fileBody2 = new FileBody(file2);
multipartEntity.addPart("theFile2", fileBody2);

使用该代码:

final InputStreamBody binVideo = new InputStreamBody(new FileInputStream(file2), "video/mp4", file2.getName());
multipartEntity.addPart("video", binVideo);

因为现在第三部分是 InputStream 而不是 File,您的多部分 HTTP 请求将具有 header Transfer-Encoding: chunked

关于file - httpClient,在分块模式下执行 Multipart 的 POST 时出现问题...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199080/

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