You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Retrofit POST接口中上传二进制类型文件?

Retrofit POST接口上传二进制文件实现方法

核心实现流程

Retrofit通过@Multipart注解支持表单式文件上传,以下是完整实现步骤:

  1. 定义Retrofit接口
    用@Multipart标记接口方法,结合@POST指定接口路径,通过@Query传递URL参数,@Part传递文件部件:

    @Multipart
    @POST("user_trial_ocr")
    Call<YourResponseModel> getOcr(@Query("service") String serviceType, @Part MultipartBody.Part file);
    

    注意:需将YourResponseModel替换为实际的接口响应实体类,避免使用无泛型的Call。

  2. 构建文件请求体与Multipart部件
    将本地文件转换为RequestBody时,要指定与文件匹配的媒体类型,再包装为MultipartBody.Part:

    // 假设file0是本地File对象
    RequestBody requestFile = RequestBody.create(MediaType.parse("image/jpeg"), file0);
    // createFormData第一个参数是后端约定的表单字段名(比如"image"),第二个是文件名
    MultipartBody.Part filePart = MultipartBody.Part.createFormData("image", file0.getName(), requestFile);
    

    原代码修正点:createFormData第一个参数不应写媒体类型image/jpeg,而是后端接收文件的表单字段名;RequestBody的MediaType要对应文件实际类型,而非multipart/form-data。

  3. 发起上传请求
    通过Retrofit接口实例调用方法,执行异步请求并处理响应:

    Call<YourResponseModel> call = jsonPlaceHolderApi.getOcr("your_service_value", filePart);
    call.enqueue(new Callback<YourResponseModel>() {
        @Override
        public void onResponse(Call<YourResponseModel> call, Response<YourResponseModel> response) {
            // 处理成功响应逻辑
        }
    
        @Override
        public void onFailure(Call<YourResponseModel> call, Throwable t) {
            // 处理请求失败逻辑
        }
    });
    

关键注意事项

  • 确保项目已正确引入Retrofit和OkHttp相关依赖
  • 媒体类型需与上传文件匹配:比如PDF用application/pdf,通用二进制文件用application/octet-stream
  • 后端接口需配置支持multipart/form-data类型的请求

内容的提问来源于stack exchange,提问作者Thambi YT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:45:35