retrofitでmultipart通信 複数の画像を送信する
通常のultipart通信に何を変えれば良いか
変えるべきはインターフェースの関数の引数に画像部分を増やすこと。そしてMultipartBody.Partオブジェクトを贈りたい画像の枚数分生成すること。 これが一枚画像を送る場合と異なることだ。
Interface
//Itemオブジェクトを生成する //認証ユーザーのみリクエスト送れる仕組みが必要 //@Headers("Content-Type:application/json") @Multipart @POST("api/item_create_1/") fun postItemCreateAPIViewMultiPart( @Header("Authorization") authTokenHeader: String, @Part file:MultipartBody.Part, @Part file:MultipartBody.Part, @Part file:MultipartBody.Part, @Part("testpart") requestBody: RequestBody ):Call<ResultModel>
MultipartBody.Partオブジェクトを生成
val file1 = File("file/path") val file2 = File("file/path") val file3 = File("file/path") val reqBody1 = RequestBody.create(MediaType.parse("image/*"), file1) val reqBody2 = RequestBody.create(MediaType.parse("image/*"), file2) val reqBody3 = RequestBody.create(MediaType.parse("image/*"), file3) val multipartBody1 = MultipartBody.Part.createFormData("image1", file.name, reqBody1) val multipartBody2 = MultipartBody.Part.createFormData("image2", file.name, reqBody2) val multipartBody3 = MultipartBody.Part.createFormData("image3", file.name, reqBody3)
送信
Retrofit.create(Hoge::class.java).postItemCreateAPIViewMultiPart(authTokenHeader, multipartBody1, multipartBody2, multipartBody3, requestBody)