使用okhttp v3.2.0上传多个图像文件

初学者

我正在尝试使用okhttp v3.2.0上传包含多个图像的多部分数据(可以是一个或最多4个图像),主要问题是,除图像以外的所有数据都已上传到服务器。我尝试了okhttp在其配方页面上的源代码,还尝试了使用OkHttp分段上传大文件使用okhttp上传文件,但未成功。该应用程序没有崩溃,没有错误。但是图像没有上传。我还使用POSTMAN检查了服务器端API,并且工作正常,没有任何问题。这是我的代码,感谢您的帮助。

String URL = BASE_URL + "PostRequest.php";
MediaType MEDIA_TYPE;

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String PostDate = sdf.format(c.getTime());

mOkHttpClient = new OkHttpClient.Builder()
                .connectTimeout(20, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS)
                .readTimeout(40, TimeUnit.SECONDS)
                .build();

MultipartBody.Builder mRequestBody = new MultipartBody.Builder()
    .setType(MultipartBody.FORM);
    mRequestBody.addFormDataPart("SECURITYCODE",SECURITY_CODE);
    mRequestBody.addFormDataPart("EMAIL", Email);
    mRequestBody.addFormDataPart("CATEGORY", Category);
    mRequestBody.addFormDataPart("SUBCATEGORY", SubCategory);
    mRequestBody.addFormDataPart("TITLE", Title);
    mRequestBody.addFormDataPart("DESCRIPTION", Description);
    mRequestBody.addFormDataPart("LOCATION", Location);
    mRequestBody.addFormDataPart("POSTDATE", PostDate);
    mRequestBody.addFormDataPart("LOCALITY", Locality);
    mRequestBody.addFormDataPart("TOTALIMAGES", Imagepaths.size()+"");

if (Imagepaths.size() > 0) {
    File file = new File(Imagepaths.get(0));
    if (file.exists()) {
        Log.d("file exist", "yes");
    }
    MEDIA_TYPE = Imagepaths.get(0).endsWith("png") ?    
        MediaType.parse("image/png") : MediaType.parse("image/jpeg");
    RequestBody imageBody = RequestBody.create(MEDIA_TYPE, file);
    mRequestBody.addFormDataPart("IMAGE1", "IMAGE1", imageBody);
}

if (Imagepaths.size() > 1) {
    File file = new File(Imagepaths.get(1));
    MEDIA_TYPE = Imagepaths.get(0).endsWith("png") ? 
        MediaType.parse("image/png") : MediaType.parse("image/jpeg");
    RequestBody imageBody = RequestBody.create(MEDIA_TYPE, file);
    mRequestBody.addFormDataPart("IMAGE2", "IMAGE2", imageBody);
}

if (Imagepaths.size() > 2) {
    File file = new File(Imagepaths.get(2));
    MEDIA_TYPE = Imagepaths.get(0).endsWith("png") ? 
        MediaType.parse("image/png") : MediaType.parse("image/jpeg");
    RequestBody imageBody = RequestBody.create(MEDIA_TYPE, file);
    mRequestBody.addFormDataPart("IMAGE3", "IMAGE3", imageBody);
}

if (Imagepaths.size() > 3) {
    File file = new File(Imagepaths.get(3));
    MEDIA_TYPE = Imagepaths.get(0).endsWith("png") ? 
        MediaType.parse("image/png") : MediaType.parse("image/jpeg");
    RequestBody imageBody = RequestBody.create(MEDIA_TYPE, file);
    mRequestBody.addFormDataPart("IMAGE4", "IMAGE4", imageBody);
}

RequestBody rb = mRequestBody.build();

Request request = new Request.Builder()
    .url(URL)
    .post(rb)
    .build();   

try {
    Response mResponse = mOkHttpClient.newCall(request).execute();
        if (!mResponse.isSuccessful()) throw new IOException();

        responseMsg = mResponse.body().string();

} catch (IOException e) {
    responseMsg = timeoutMessage;
}

return responseMsg;
阿里米尔

首先,您的代码中有几个错误

检查媒体类型检查位置,始终使用相同的列表元素(应为索引1,2,3等)

   if (Imagepaths.size() > 1) {
        File file = new File(Imagepaths.get(1));

        MEDIA_TYPE = Imagepaths.get(0).endsWith("png") ? 
                MediaType.parse("image/png") : MediaType.parse("image/jpeg");


        RequestBody imageBody = RequestBody.create(MEDIA_TYPE, file);
        mRequestBody.addFormDataPart("IMAGE2", "IMAGE2", imageBody);
    }

其次,mRequestBody.addFormDataPart("IMAGE2", "IMAGE2", imageBody);您的图像名称是否为IMAGE1,IMAGE2等?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用okhttp v3.2.0上传多个图像文件

来自分类Dev

如何使用GraphSON v2而不是v3?

来自分类Dev

Cocos2d v3图像命名约定

来自分类Dev

使用Youtube API v3断点续传上传较大的视频时出错(在AWS EC2上)

来自分类Dev

Drive API V3:使用 Google Apps 脚本的多块可恢复上传文件大小错误(缺少 2 个字节)

来自分类Dev

使用AFNetworking异步上传文件到Strava V3 API并上传文件

来自分类Dev

如何使用多个随机YouTube v3 API密钥

来自分类Dev

如何使用AutoIt v3隐藏文件?

来自分类Dev

使用Google云端硬盘V3下载CSV文件(V2完美运行)会引发错误403

来自分类Dev

在OpenShift V3中使用REST API上传图像时出现TypeError

来自分类Dev

使用okHttp3上传动态文件数量

来自分类Dev

如何使用Multipart上传图像文件?

来自分类Dev

如何使用axios上传图像文件?

来自分类Dev

使用 Selenium 上传图像文件

来自分类Dev

CakePHP3-上传图像文件

来自分类Dev

使用AFNetworking异步上传文件到Strava V3 API的文件

来自分类Dev

通过URL访问上传的图像文件的正确方法是什么-Google Drive API v3

来自分类Dev

使用YouTube API v3从多个渠道检索最近上传的最有效方法

来自分类Dev

使用IDS V3在线将文件上传到Quickbooks

来自分类Dev

v2和v3之间的奇怪文件列表响应差异

来自分类Dev

使用Retrofit2 / okhttp3上传文件,上传操作始终执行两次,一次快速,另一次缓慢

来自分类Dev

使用YoutubeApi v3和ouath2将视频上传到我的Youtube频道,而无需用户身份验证

来自分类Dev

使用来自不同输入字段的multer上传多个图像文件

来自分类Dev

在AndroidTest类中使用dagger2注入OkHttp以使OkHttp3IdlingResource再生

来自分类Dev

在AndroidTest类中使用dagger2注入OkHttp以使OkHttp3IdlingResource再生

来自分类Dev

使用Google Maps Javascript API v3数据层设置多个GeoJson文件的样式

来自分类Dev

使用OkHttp的HTTP / 2

来自分类Dev

将@PUT与Retrofit 2和OkHttp3结合使用

来自分类Dev

使用Physics的碰撞检测在cocos2dx v3中不起作用

Related 相关文章

  1. 1

    使用okhttp v3.2.0上传多个图像文件

  2. 2

    如何使用GraphSON v2而不是v3?

  3. 3

    Cocos2d v3图像命名约定

  4. 4

    使用Youtube API v3断点续传上传较大的视频时出错(在AWS EC2上)

  5. 5

    Drive API V3:使用 Google Apps 脚本的多块可恢复上传文件大小错误(缺少 2 个字节)

  6. 6

    使用AFNetworking异步上传文件到Strava V3 API并上传文件

  7. 7

    如何使用多个随机YouTube v3 API密钥

  8. 8

    如何使用AutoIt v3隐藏文件?

  9. 9

    使用Google云端硬盘V3下载CSV文件(V2完美运行)会引发错误403

  10. 10

    在OpenShift V3中使用REST API上传图像时出现TypeError

  11. 11

    使用okHttp3上传动态文件数量

  12. 12

    如何使用Multipart上传图像文件?

  13. 13

    如何使用axios上传图像文件?

  14. 14

    使用 Selenium 上传图像文件

  15. 15

    CakePHP3-上传图像文件

  16. 16

    使用AFNetworking异步上传文件到Strava V3 API的文件

  17. 17

    通过URL访问上传的图像文件的正确方法是什么-Google Drive API v3

  18. 18

    使用YouTube API v3从多个渠道检索最近上传的最有效方法

  19. 19

    使用IDS V3在线将文件上传到Quickbooks

  20. 20

    v2和v3之间的奇怪文件列表响应差异

  21. 21

    使用Retrofit2 / okhttp3上传文件,上传操作始终执行两次,一次快速,另一次缓慢

  22. 22

    使用YoutubeApi v3和ouath2将视频上传到我的Youtube频道,而无需用户身份验证

  23. 23

    使用来自不同输入字段的multer上传多个图像文件

  24. 24

    在AndroidTest类中使用dagger2注入OkHttp以使OkHttp3IdlingResource再生

  25. 25

    在AndroidTest类中使用dagger2注入OkHttp以使OkHttp3IdlingResource再生

  26. 26

    使用Google Maps Javascript API v3数据层设置多个GeoJson文件的样式

  27. 27

    使用OkHttp的HTTP / 2

  28. 28

    将@PUT与Retrofit 2和OkHttp3结合使用

  29. 29

    使用Physics的碰撞检测在cocos2dx v3中不起作用

热门标签

归档