gpt4 book ai didi

android - Retrofit 2 beta2 无法进行分段上传

转载 作者:行者123 更新时间:2023-11-30 01:47:34 24 4
gpt4 key购买 nike

我正在使用 Retrofit beta2,但在分段上传时遇到困难。我已经尝试了指定的代码 here .我可能在这里遗漏了一些东西。

public interface SendMediaApiService {
@Multipart
@POST(/api/v1/messages)
Call<ApiResponse> upload(
@Header("Authorization") String token,
@Query("recipient_user_id") String userId,
@Query("message") String message,
@Part("name=\"photo\"; filename=\"selfie.jpg\" ") RequestBody file
);
}

private void upload() {
Retrofit retrofit = new Retrofit.Builder()
// do some stuffs here


File file = new File(filePath);
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
Call<ApiResponse> call = service.upload(token, userId, msg, requestBody);

}

当我 curl 的时候

$ curl -v \
> -H "Authorization: Bearer TOKEN" \
> -F "photo=@/path/to/my/image.jpg" \
> http://domain.com/api/v1/messages?recipient_user_id=USER_ID&message=test

最佳答案

也许,你可以删除@Multipart

就这样,

@POST("/V2/image/{type}")
Call<ImageUrl> uploadImg(@Path("type") int type, @Body RequestBody image);

要创建 RequestBody,您可以使用

    public static RequestBody createImageRequest(Bitmap bitmap) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
return new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("file", "test.png", RequestBody.create(MediaType.parse("image/png"), byteArrayOutputStream.toByteArray())).build();
}

当我使用@Multipart 请求时,图像文件将被放入请求正文中。不带@Multipart时,请求头中的文件。

关于android - Retrofit 2 beta2 无法进行分段上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495270/

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