11

OkHttp v3で動的な数のファイルのアップロードを管理する方法については、以前のバージョンの OkHttp で既に実装しています。compile 'com.squareup.okhttp:okhttp:2.6.0'

クラス フォームにいくつかの変更があり、マルチパート ボディがモデル化されるようになりました。不透明な FormEncodingBuilder を、より強力な FormBody と FormBody.Builder の組み合わせに置き換えました。同様に、MultipartBuilder を MultipartBody、MultipartBody.Part、および MultipartBody.Builder にアップグレードしました。

以下のコードは古いバージョンです

final MediaType MEDIA_TYPE = MediaType.parse(AppConstant.arrImages.get(i).getMediaType());

//If you can have multiple file types, set it in ArrayList

MultipartBuilder buildernew = new MultipartBuilder()
        .type(MultipartBuilder.FORM)
        .addFormDataPart("title", title);   //Here you can add the fix number of data.

for (int i = 0; i < AppConstants.arrImages.size(); i++) {  //loop to add dynamic number of files.
    File f = new File(FILE_PATH,TEMP_FILE_NAME + i + ".png");
    if (f.exists()) {
        buildernew.addFormDataPart(TEMP_FILE_NAME + i, TEMP_FILE_NAME + i + FILE_EXTENSION, RequestBody.create(MEDIA_TYPE, f));
    }
}

RequestBody requestBody = buildernew.build();  

//Build the object of MultipartBuilder and get object of RequestBody.

しかしOkHttp <version>3.0.1</version>、ファイルアップロードのコード実装は、以下のコードのようなものです( source )

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("title", "Square Logo")
        .addFormDataPart("image", "logo-square.png",
            RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png")))
        .build();

私は同じロジックを試しMultipartBodyましたが、実りある解決策は見つかりませんでした。if elseまたは、さまざまなケースで同じものを実装する必要がありますか?(これは実現不可能です)

4

1 に答える 1