当前位置: 首页 > 知识库问答 >
问题:

使用多部分进行改造 2.0.2 映像上传

南宫阳焱
2023-03-14

我是新的改装,我想上传一张带有不同参数的图片,比如name,dob,mobile。我不知道我错在哪里,请引导我。我遵循这个链接

这是我的代码

接口

 @Multipart
    @POST("signup")
    Call<ResponseBody> getSignup(@Part("name") RequestBody name, @Part("email") RequestBody email, @Part("dob") RequestBody dob, @Part("phone") RequestBody phone, @Part("IMEI") RequestBody IMEI, @Part MultipartBody.Part file);

上传代码

 // create RequestBody instance from file
                RequestBody requestFile =
                        RequestBody.create(MediaType.parse("multipart/form-data"), file);

                // MultipartBody.Part is used to send also the actual file name
                MultipartBody.Part body =
                        MultipartBody.Part.createFormData("image", file.getName(), requestFile);

                RequestBody name =
                        RequestBody.create(
                                MediaType.parse("multipart/form-data"), et_name.getText().toString());

                RequestBody email =
                        RequestBody.create(
                                MediaType.parse("multipart/form-data"), et_email.getText().toString());

                RequestBody dob =
                        RequestBody.create(
                                MediaType.parse("multipart/form-data"), et_dob.getText().toString());

                RequestBody mobile =
                        RequestBody.create(
                                MediaType.parse("multipart/form-data"), et_mobile.getText().toString());


                RequestBody imei =
                        RequestBody.create(
                                MediaType.parse("multipart/form-data"), IMEI);

                Call<ResponseBody> responseBodyCall = apiInterface.getSignup(name, email, dob, mobile, imei, body);
                responseBodyCall.enqueue(new Callback<ResponseBody>() {
                    @Override
                    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

                        String response_two = response.body().toString();

                        Log.i(TAG, "onResponse: " + response_two);
//                        startActivity(new Intent(this, OTPActivity.class));
                    }

                    @Override
                    public void onFailure(Call<ResponseBody> call, Throwable t) {
                        Log.e("Upload error:", t.getMessage());
                    }
                });

共有3个答案

司空宣
2023-03-14

你需要添加相同类型的图像也看到这里它是如何工作的,这也是为多个图像。

@Multipart
@POST(ApiConstants.EDIT_REQUEST)
Observable<CommonModel> editRequest(@Part("requestid") RequestBody requestid, @PartMap() Map<String, RequestBody> mapFileAndName);


RequestBody requestid1 = RequestBody.create(MediaType.parse("text/plain"), requestid);

Map<String, RequestBody> files = new HashMap<>();
    for (int i = 0; i < mList.size(); i++) {
        String key = "package_image[" + String.valueOf(i) + "]";
        files.put("" + key + "\"; filename=\"" + key + ".png", getRequestFile(new File(mList.get(i).getImagePath())));
}



private RequestBody getRequestFile(File file) {

    RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
    return fbody;

}

有关更多详细信息,请访问此处

怀浩大
2023-03-14

这是我的后多部分的例子

@Multipart
@POST("/api/register?platform=android")
Call<Register> register(@Part("photo\"; filename=\"photoName.png\" ") RequestBody photo,
                                     @Part("name") RequestBody name,
                                     @Part("phoneNumber") RequestBody phoneNumber,
                                     @Part("password") RequestBody password,carColor,
                                     @Query("language") String language);
单于耘豪
2023-03-14

改造2.0以后试试这个答案

@Multipart
@POST("/service/users/add_user")
Call<AddUsersModel> addUser(@Part("user_name") RequestBody userName, @Part("user_last_name") RequestBody lastName, @Part("user_password") RequestBody password,
                               @Part("user_email") RequestBody email, @Part("user_mobile") RequestBody mobile, @Part MultipartBody.Part user_profile);

MulitpartBody的文件路径。部分转换

   MultipartBody.Part profileImageBody = null;
        RequestBody reqFile = null;
        try {
            String filePath = CameraIntentUtil.getFIlePath();
            Log.d(TAG, "createAccount: filePath:" + filePath);
            if (filePath != null) {
                File file = new File(filePath);

                reqFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
                // "user_profile" is my post request key
                profileImageBody = MultipartBody.Part.createFormData("user_profile", file.getName(), reqFile);
            }
        } catch (Exception e) {
            Log.e(TAG, "createAccount: ", e);
        }

字符串到请求正文转换

public static RequestBody stringToRequestBody(String data) {
    return RequestBody.create(MediaType.parse("multipart/form-data"), data);
}

很晚才回答……但我希望它至少对任何人都有帮助

 类似资料:
  • 我要哭了,因为我尝试了很多解决方案和话题,但都不起作用。 null 您需要发送一个多部分请求(enctype=“multipart/form-data”)。 所以,有人能请帮助我,为什么我有HTTP 400与上面的错误消息?我可以在代码中更改什么以使此调用工作?谢谢你

  • 我有以下错误: 我为http请求设置了服务器,仍然得到错误:

  • 我正在尝试上传图像与修改库。我就是这样上传的: 请求代码: 答复: 如果我是通过客户端浏览器(如postman或DHC)发布的,则请求与上面相同,并且我得到一个成功的XML响应。 请看我在邮递员客户端上尝试的截图。它是成功的。

  • 如何使用RxJava和Kotlin中的改型创建api调用的泛型类? 我的JAVA实现是:: 首先添加Gradle依赖项:(更新到最新版本(如果可用)) //用于改装 实现“com.squareup.reverfit2:reverfit:2.3.0” 实现“com.squareup.reverfit2:converter-gson:2.3.0” //对于拦截器实现“com.squareup.okht

  • 我在spring boot中编写了一个restful web服务来接收文件。 如何将文件从客户端java代码上传到web服务。而不是AJAX调用或HTML页面表单多部分请求? 下面的代码使用JSON对象调用web服务。像这样,我想在上面写的web服务中接收文件。

  • 我正在尝试使用aws-java-sdk(1.11.230)编写一个实用程序。我可以使用PutObjectRequest编写SSE-KMS文件,如下所示: 但是在尝试以多部分方式上传它时,我找不到任何方法来指定SSE-KMS的加密配置。 任何人都可以建议一种方法来成功完成这一任务吗。如有任何建议,我们将不胜感激。 维卡什·帕里克