使用改造2多个文件和参数上传

时间:2016-09-23 06:40:09

标签: java android image-uploading retrofit2

我尝试在单个请求中上传3张图片和4个参数:

尝试1

@Multipart
    @POST("example/upload")
    Call<String> upload(@Part("param_1") String param1,
                             @Part("param_2") String param2,
                             @Part("param_3") String param3,
                             @Part("param_4") String param4,
                             @Part("param_5") String param5,
                             @Part("image_1") okhttp3.RequestBody image1Jpg,
                             @Part("image_2") okhttp3.RequestBody image2Jpg,
                             @Part("another_image") okhttp3.RequestBody anotherImageJpg);

尝试2

@Multipart
    @POST("example/upload")
    Call<String> upload(@PartMap() Map<String, okhttp3.RequestBody> data,
                                   @Part okhttp3.MultipartBody.Part image1,
                                   @Part okhttp3.MultipartBody.Part image2,
                                   @Part okhttp3.MultipartBody.Part anotherImage);

尝试3

@Multipart
    @POST("example/upload")
    Call<String> upload(@PartMap() Map<String, okhttp3.RequestBody> data,
                             @Part("image_1") okhttp3.RequestBody image1Jpg,
                             @Part("image_2") okhttp3.RequestBody image2Jpg,
                             @Part("another_image") okhttp3.RequestBody anotherImageJpg);

以下我上传方法的方法

public static RequestBody createRequestBody(Bitmap bitmap) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);
        return RequestBody.create(okhttp3.MediaType.parse(MULTIPART_FROM_DATA), out.toByteArray());
    }


public static MultipartBody.Part createPart(String name, String fileName, Bitmap bitmap) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);
        RequestBody data = RequestBody.create(okhttp3.MediaType.parse(MULTIPART_FROM_DATA), out.toByteArray());
        MultipartBody.Part part = MultipartBody.Part.createFormData(name, fileName, data);
        return part;
    }

我收到了400 Bad Request错误,但是通过POSTMAN测试,服务器端没问题。

我错了什么? 任何想法都会很感激。

0 个答案:

没有答案