Retrofit2でmultipart × multiple images をuploadする
久しぶりにやったらドチャクソハマったのでメモ
interface Service { @Multipart @POST("upload") Call<Response> upload( @Part(/* images[] */) MultipartBody.Part[] images, @Part("message") RequestBody message); }
Service service = getService(); List<MultipartBody.Part> parts = new ArrayList<>(); for (String imageUrl: imageUrls) { Uri uri = Uri.parse(uriString); String mimetype = context.getContentResolver().getType(uri); if (mimetype == null) continue; File tempFile = createTempFile(uri); parts.add(MultipartBody.Part.createFormData("images[]", tempFile.getName(), RequestBody.create(MediaType.parse(mimetype), tempFile))); } RequestBody messagePart = RequestBody.create(MultipartBody.FORM, message); service.upload(parts.toArray(new MultipartBody.Part[0]), messagePart);